เป็นไปได้หรือไม่ที่จะเปลี่ยนตำแหน่งของแพ็กเกจสำหรับ NuGet?


283

ฉันมีการประชุมดังต่อไปนี้สำหรับโครงการส่วนใหญ่ของฉัน:

/src
    /Solution.sln
    /SolutionFolder
        /Project1
        /Project2
        /etc..
/lib
    /Moq
        moq.dll
        license.txt
    /Yui-Compressor
        yui.compressor.dll
/tools
    /ILMerge
        ilmerge.exe

คุณจะสังเกตเห็นว่าฉันไม่เก็บไลบรารีภายนอกไว้ในโฟลเดอร์ต้นทาง ฉันสนใจที่จะใช้ NuGet มาก แต่ไม่ต้องการไลบรารีภายนอกเหล่านี้ภายในโฟลเดอร์ซอร์ส NuGet มีการตั้งค่าให้เปลี่ยนไดเรกทอรีที่โหลดแพ็คเกจทั้งหมดหรือไม่


10
ใช่ใช่ใช่! นี่เป็นโครงสร้างโครงการที่ฉันใช้ (หรือเกือบจะมาก) และฉันสงสัยอยู่เสมอว่า NuGet สามารถรองรับได้ ...
Noldorin

ฉันได้ไปลงในรายละเอียดเกี่ยวกับวิธีการทำเช่นนี้กับคำตอบต่อไปนี้: stackoverflow.com/a/19466173/564726 คุณต้องลบตัวเลือก solutionDir ออกจากคำสั่งกู้คืนเพื่อให้ทำงานได้อย่างถูกต้อง
BrutalDev

2
ฉันวาง. sln ไว้ในระดับเดียวกับโฟลเดอร์ระดับบนสุดของคุณ :)
Ian Warburton

คำตอบ:


242

ตอนนี้เป็นไปได้ที่จะควบคุมโฟลเดอร์ที่ติดตั้งแพคเกจ

http://nuget.codeplex.com/workitem/215

แก้ไข: ดูความคิดเห็นของ Phil Haack เมื่อวันที่ 10 ธันวาคม 2010 เวลา 23:45 น. (ในรายการงาน / ลิงค์ด้านบน) การสนับสนุนถูกนำไปใช้บางส่วนใน 1.0 แต่ไม่มีการบันทึกไว้

ตามที่ @dfowler: เพิ่มไฟล์ nuget.config ถัดจากโซลูชันด้วยสิ่งนี้:

<settings>
<repositoryPath>{some path here}</repositoryPath>
</settings>

มีแพ็กเกจ nugetสำหรับการสร้างการแทนที่โฟลเดอร์แพ็กเกจ

อัพเดทสำหรับเวอร์ชั่น 2.1

ตามที่ Azat แสดงความคิดเห็นขณะนี้มีเอกสารอย่างเป็นทางการเกี่ยวกับวิธีการควบคุมตำแหน่งที่ตั้งของแพคเกจ บันทึกประจำรุ่น 2.1ระบุการตั้งค่าต่อไปนี้ในไฟล์ nuget.config (ดูบันทึกประจำรุ่นสำหรับรายละเอียดของสถานที่ที่ถูกต้องที่จะนำ config ไฟล์และวิธีการลำดับชั้นรูปแบบการตั้งค่าการทำงานของก):

<configuration>
  <config>
    <add key="repositoryPath" value="C:\thePathToMyPackagesFolder" />
  </config>
  ... 
</configuration>

สิ่งนี้จะเปลี่ยนโฟลเดอร์แพ็คเกจสำหรับระดับการกำหนดค่าที่คุณวางไฟล์ไว้ (โซลูชันหากคุณใส่ไว้ในไดเรกทอรีโซลูชันโครงการในไดเรกทอรีโครงการและอื่น ๆ ) โปรดทราบว่าการเปิดตัวบันทึกรัฐ:

[... ] หากคุณมีโฟลเดอร์แพคเกจที่มีอยู่ใต้รูทโซลูชันของคุณคุณจะต้องลบมันก่อนที่ NuGet จะวางแพ็คเกจในตำแหน่งใหม่


5
เป็นไปได้จริงโดยใช้ไฟล์กำหนดค่าด้านบน เหตุผลที่ไม่ได้เน้นคือเพราะเราไม่ได้ผ่านขั้นตอนการเปิดใช้งานสิ่งนี้ผ่าน UI และวิธีการอื่น ๆ ดังนั้นคาดว่าจะเล่นโวหาร
davidfowl

5
ดูreviewboard.nupack.com/r/131สำหรับคำอธิบายแบบเต็มโดย @dfowler ว่า nuget.config ทำงานอย่างไร ตัวอย่างเช่น nuget.config ที่ถูกต้องจะมีลักษณะดังนี้: <settings><repositoryPath>lib</repositoryPath> </settings>
Lee Harold

5
docs.nuget.org/docs/release-notes/nuget-2.1โปรดดูที่ "ระบุตำแหน่งโฟลเดอร์ 'แพ็กเกจ' แพ็คเกจ '
Azat

1
ฉันสามารถยืนยันวิธีการใหม่ในการทำสิ่งต่าง ๆ ใน 2.1+ ไม่ทำงาน และมีข้อบกพร่องเกี่ยวกับเรื่อง CodePlex: nuget.codeplex.com/workitem/2921
กรณี

5
รุ่นที่สองใช้งานได้สำหรับฉันฉันใช้ NuGet รุ่นล่าสุดและตอนนี้สองโซลูชันสามารถแบ่งปัน repo เดียวกันได้ ฉันคิดว่ามันอาจจะไม่ทำงานสำหรับบางคนเพราะพวกเขาอาจใช้เส้นทางที่แน่นอน? ดูเหมือนว่าเส้นทางสัมบูรณ์กับเส้นทางญาตินั้นสำคัญ
Csaba Toth

63
  1. สร้างไฟล์ชื่อ "nuget.config"
  2. เพิ่มไฟล์นั้นไปยังโฟลเดอร์โซลูชันของฉัน

สิ่งนี้ไม่ได้ผลสำหรับฉัน:

<configuration>
  <config>
    <add key="repositoryPath" value="..\ExtLibs\Packages" />
  </config>
  ... 
</configuration>

สิ่งนี้ได้ผลกับฉัน:

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <repositoryPath>..\ExtLibs\Packages</repositoryPath>
</settings>

กันที่นี่ การกำหนดค่า> การกำหนดค่าไม่ทำงาน แต่การตั้งค่า> repositoryPath ทำ
ยีน Reddick

เฉพาะโซลูชันที่สองเท่านั้นที่ใช้งานได้: docs.nuget.org/docs/reference/nuget-config-file
cheesemacfly

15
ขึ้นอยู่กับรุ่นของ NuGet ที่คุณใช้
Bronumski

1
โปรดทราบว่าเส้นทางสัมพัทธ์จะสัมพันธ์กับการแก้ปัญหาดังนั้นหากโครงการของคุณอยู่ในระดับที่แตกต่างกันมันจะไม่ทำงาน
Nine Tails

2
งานนี้ดีสำหรับ Visual Studio 2013 แต่ถ้าฉันกำลังใช้ Visual Studio 2015 แล้วก็ยังติดตั้งแพคเกจในแพคเกจโฟลเดอร์ที่อยู่ใกล้กับไฟล์ sln ที่
fhnaseer

40

โอเคสำหรับคนอื่นที่อ่านโพสต์นี้ - นี่คือสิ่งที่ฉันเข้าใจถึงคำตอบมากมายด้านบน:

  1. ไฟล์ nuget.config ในโฟลเดอร์. nuget นั้นสัมพันธ์กับโฟลเดอร์นั้น สิ่งนี้มีความสำคัญเพราะหากโฟลเดอร์ใหม่ของคุณมีลักษณะคล้าย '../Packages' ซึ่งจะใส่ไว้ในที่ที่จะออกนอกกรอบเสมอ ในฐานะ @ bruce14 คุณต้องทำ '../../Packages' แทน

  2. ฉันไม่สามารถรับ nuget ล่าสุด (2.8.5) เพื่อค้นหาโฟลเดอร์แพ็คเกจนอกตำแหน่งมาตรฐานโดยไม่เปิดใช้งานการเรียกคืนแพ็กเกจ ดังนั้นเมื่อคุณเปิดใช้งานการคืนค่าแพคเกจแล้วควรเพิ่มสิ่งต่อไปนี้ในไฟล์ nuget.config ภายในโฟลเดอร์. nuget เพื่อเปลี่ยนตำแหน่ง:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      ...
      <config>
        <add key="repositoryPath" value="..\..\Packages" />
      </config>
      ...
    </configuration>
  3. (ซึ่งเป็นสิ่งสำคัญ)ถ้าคุณทำการเปลี่ยนแปลงใด ๆ ที่อยู่ภายในสถานที่โฟลเดอร์แพคเกจของไฟล์ nuget.config ที่คุณต้องรีสตาร์ทภาพสตูดิโอหรือใกล้เคียง / โหลดทางออกสำหรับการเปลี่ยนแปลงที่จะมีผลบังคับใช้


5
เชื่อฉันจุดที่ 3 ของคุณช่วยชีวิตฉันไว้ ฉันบ้ามากจาก 3 ชั่วโมงที่ผ่านมาจนกระทั่งฉันอ่านข้อ 3 ของคุณ : '(ขอบคุณมากครับ!
นรก

24

โซลูชันสำหรับ Nuget 3.2 บน Visual Studio 2015 คือ:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="repositoryPath" value="../lib" />
    </config>
</configuration>

การใช้ฟอร์เวิร์ดสแลชสำหรับโฟลเดอร์พาเรนต์ บันทึกไฟล์ด้านบน (nuget.config) ในโฟลเดอร์โซลูชัน

การอ้างอิงมีอยู่ที่นี่


ที่สมบูรณ์แบบ! ทำงานกับ Visual Studio 2015 และ Nuget เวอร์ชัน 3.2.0.10516
Anon Dev

คุณดูเหมือนจะมีความหมายทับ .. แต่ถ้าวิธีการแก้ปัญหาที่อยู่บนหน้าต่างบางทีนั่นอาจจะผลัดทับลงไปข้างหลังหนึ่งหรือบางทีอาจจะทับเป็นพิมพ์ผิดและควรเปลี่ยนเป็นข้างหลังหนึ่ง
เจอราร์ดโอนีล

ฉันอยู่ปี 2558 และฉันต้องใช้ .. \ .. \ แพคเกจเพื่อให้โฟลเดอร์เดียวขึ้น
Rhyous

1
../libนั่นคือสแลชต่อไปไม่ใช่สแลชย้อนหลัง คุณหมายถึงอะไร
jpmc26

ใช่มันเป็นฟอร์เวิร์ดสแลช อัปเดตคำตอบ
phuongnd

15

โซลูชันที่เสนอในบันทึกย่อประจำรุ่นสำหรับ 2.1 ไม่สามารถใช้งานได้ทันที พวกเขาลืมที่จะพูดถึงว่ามีรหัส:

internal string ResolveInstallPath()
{
    if (!string.IsNullOrEmpty(this.OutputDirectory))
    {
        return this.OutputDirectory;
    }
    ISettings settings = this._configSettings;

    ...
}

ซึ่งป้องกันไม่ให้มันทำงาน ในการแก้ไขปัญหานี้คุณต้องแก้ไขไฟล์ NuGet.targets ของคุณและลบพารามิเตอร์ 'OutputDirectory':

    <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch)</RestoreCommand>

ดังนั้นตอนนี้ถ้าคุณเพิ่ม 'repositoryPath' config ใน NuGet.config (ดูบันทึกประจำรุ่นสำหรับคำอธิบายของสถานที่ที่ถูกต้องในการวางไฟล์ปรับแต่ง) มันจะคืนค่าแพ็คเกจทั้งหมดในที่เดียว แต่ ... .csproj ของคุณยังคง มีคำแนะนำสำหรับแอสเซมบลีที่เขียนเป็นเส้นทางที่สัมพันธ์กัน ...

ฉันยังไม่เข้าใจว่าทำไมพวกเขาถึงลำบากแทนที่จะเปลี่ยน PackageManager ดังนั้นมันจะเพิ่มเส้นทางคำใบ้ที่เกี่ยวข้องกับ PackagesDir นั่นคือวิธีที่ฉันทำด้วยตนเองเพื่อให้มีตำแหน่งของแพคเกจต่าง ๆ บนเครื่อง (บนเดสก์ท็อปของฉัน) และในตัวสร้างเอเจนต์

<Reference Include="Autofac.Configuration, Version=2.6.3.862, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>$(PackagesDir)\Autofac.2.6.3.862\lib\NET40\Autofac.Configuration.dll</HintPath>
</Reference>

1
คุณพูดถูก ที่ บริษัท ของฉันเราใช้ NuGet เวอร์ชันที่เราแก้ไขตัวเองซึ่งทำในสิ่งที่คุณกำลังอธิบายเช่นเพิ่ม HintPaths เมื่อเทียบกับแพคเกจ Dir ที่ไม่สัมพันธ์กับตำแหน่งของไฟล์โครงการ มันใช้งานได้ดีอย่างสมบูรณ์ น่าเสียดายที่เราไม่เคยพยายามที่จะนำการเปลี่ยนแปลงที่เราได้ทำกับ NuGet มาเป็นเวอร์ชันทางการ แต่อาจถึงเวลาที่จะต้องทำตอนนี้ ...
afrischke

1
@afrischke: จะดีถ้าคุณทำได้ ขอบคุณ ความคิดใด ๆ เมื่อนี้อาจเกิดขึ้นได้อย่างไร
sgtz

11

นอกจากคำตอบของ Shane Kms หากคุณเปิดใช้งาน Nuget Package Restore คุณจะแก้ไข NuGet.config ที่อยู่ในโฟลเดอร์. nuget ดังต่อไปนี้:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <repositoryPath>..\..\ExtLibs\Packages</repositoryPath>
</configuration>

โปรดสังเกตว่า ".. \" พิเศษเนื่องจากมันย้อนรอยจากโฟลเดอร์. nuget และไม่ใช่โฟลเดอร์โซลูชัน


9

คำตอบนี้ไม่เหมาะกับฉัน (Nuget 2.8.6) เนื่องจากเคล็ดลับที่ขาดหายไปจะพยายามเพิ่มคำแนะนำที่นี่เนื่องจากอาจมีประโยชน์สำหรับผู้อื่น

หลังจากอ่านแหล่งข้อมูลต่อไปนี้:
https://docs.nuget.org/consume/NuGet-Config-Settings
https://github.com/NuGet/Home/issues/1346
ดูเหมือนว่า

  1. เพื่อให้การทำงานติดตั้งแพคเกจถูกต้องกับ repositoryPath ที่แตกต่างกันคุณจะต้องใช้ไปข้างหน้าทับก็เพราะพวกเขาจะใช้วัตถุ Uri ไปยังสถานที่แยก
  2. หากไม่มี$ในการเริ่มต้นมันก็ยังไม่สนใจการตั้งค่าของฉัน
  3. NuGet แคชไฟล์กำหนดค่าดังนั้นหลังจากการแก้ไขคุณจะต้องโหลดโซลูชัน / VS อีกครั้ง
  4. ฉันมีปัญหาแปลก ๆ ในขณะที่ใช้คำสั่งของ NuGet.exe เพื่อตั้งค่าตัวเลือกนี้เนื่องจากมันแก้ไข NuGet.exe ส่วนกลางของฉันภายใต้ AppData \ Roaming \ NuGet และเริ่มกู้คืนแพ็คเกจที่นั่น (เนื่องจากไฟล์ดังกล่าวมีลำดับความสำคัญสูงกว่า

เช่น

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <add key="repositorypath" value="$/../../../Common/packages" />
  </config>
</configuration>

คุณยังสามารถใช้คำสั่ง NuGet เพื่อให้แน่ใจว่าไวยากรณ์จะถูกต้องเช่นนี้:

NuGet.exe config -Set repositoryPath=$/../../../Common/packages -ConfigFile NuGet.Config

8

สำหรับโครงการ. NET Core และ Visual Studio 2017 ฉันสามารถกู้คืนแพ็กเกจทั้งหมดไปยังเส้นทางสัมพัทธ์ได้โดยระบุการกำหนดค่านี้:

<configuration>
  <config>
    <add key="globalPackagesFolder" value="lib" />
  </config>
  ... 
</configuration>

จากประสบการณ์ของฉันโฟลเดอร์ lib ถูกสร้างขึ้นในระดับเดียวกับที่พบ Nuget.config ไม่ว่าไฟล์ sln จะอยู่ที่ไหน ฉันทดสอบแล้วและพฤติกรรมนั้นเหมือนกันสำหรับคำสั่ง dotnet restore และ Visual Studio 2017 จะสร้างใหม่


ฉันลองสิ่งนี้ ฉันตั้งค่าglobalPackagesFolderคีย์ไปยังโฟลเดอร์แพคเกจของโครงการ dotnet add package MyPackageผมพยายามที่จะเพิ่มแพคเกจเดียวกับ nuget.exeดาวน์โหลดเฟรมเวิร์กทั้งหมดของแพ็คเกจ 83 .NET ลงในโฟลเดอร์นั้น นั่นไม่ใช่สิ่งที่ฉันตั้งใจ ฉันต้องการ MyPackage เดียวของฉันในโฟลเดอร์แพคเกจควบคุมที่มา
Wallace Kelly

อย่าทำอย่างนั้น! นี่จะทำให้ HDD ของคุณทำงานเร็วมากเนื่องจากแพ็คเกจทั้งหมดจะถูกดาวน์โหลดทุกครั้งที่คุณสร้างแอพใหม่
Alaa Masoud

1
ตามคำตอบของคำถามอื่นนี้: stackoverflow.com/a/47407399/4572240 "respositoryPath ใช้สำหรับแพคเกจโครงการ config, globalPackagesFolder ใช้สำหรับโครงการ PackageReference"
Siderite Zackwehdex

7

ไฟล์กำหนดค่าในคำตอบที่ยอมรับใช้งานได้สำหรับฉันใน VS2012 อย่างไรก็ตามสำหรับฉันมันใช้ได้เฉพาะเมื่อฉันทำสิ่งต่อไปนี้:

  1. สร้างโครงการใหม่ใน VS
  2. ออกจาก VS - นี่เป็นเรื่องสำคัญ
  3. คัดลอกไฟล์กำหนดค่าไปยังโฟลเดอร์โครงการ
  4. รีสตาร์ท VS และเพิ่มแพ็คเกจ

หากฉันทำตามขั้นตอนเหล่านั้นฉันสามารถใช้โฟลเดอร์แพ็คเกจที่แชร์ได้


การรีสตาร์ท VS เป็นวิธีเดียวที่ฉันจะได้รับสิ่งนี้ในการทำงาน เดาผู้จัดการแพคเกจมัน
Filip

6

เพื่อเปลี่ยนเส้นทางสำหรับโครงการที่ใช้ PackageReference แทน packages.config ที่คุณต้องใช้ globalPackagesFolder

จากhttps://docs.microsoft.com/en-us/nuget/reference/nuget-config-file

globalPackagesFolder (โครงการที่ใช้ PackageReference เท่านั้น)

ตำแหน่งของโฟลเดอร์แพ็กเกจโกลบอลดีฟอลต์ ค่าเริ่มต้นคือ% userprofile% .nuget \ packages (Windows) หรือ ~ / .nuget / packages (Mac / Linux) เส้นทางสัมพัทธ์สามารถใช้ในไฟล์ nuget.config เฉพาะโครงการ การตั้งค่านี้ถูกเขียนทับโดยตัวแปรสภาพแวดล้อม NUGET_PACKAGES ซึ่งมีความสำคัญกว่า

repositoryPath (packages.config เท่านั้น)

ตำแหน่งที่จะติดตั้งแพ็กเกจ NuGet แทนโฟลเดอร์ $ (Solutiondir) / packages เริ่มต้น เส้นทางสัมพัทธ์สามารถใช้ในไฟล์ nuget.config เฉพาะโครงการ การตั้งค่านี้ถูกเขียนทับโดยตัวแปรสภาพแวดล้อม NUGET_PACKAGES ซึ่งมีความสำคัญกว่า

<config>
    <add key="globalPackagesFolder" value="c:\packageReferences" />
    <add key="repositoryPath" value="c:\packagesConfig" />
</config>

ฉันวาง Nuget.config ไว้ถัดจากไฟล์โซลูชันของฉันและใช้งานได้


5

ชิ้นอาหารอันโอชะน้อยอีกหนึ่งที่ฉันเพิ่งค้นพบ (นี่อาจเป็นพื้นฐานที่บางคนไม่ได้กล่าวถึง แต่เป็นสิ่งสำคัญสำหรับโซลูชันของฉัน) โฟลเดอร์ "แพ็คเกจ" จะสิ้นสุดในโฟลเดอร์เดียวกับไฟล์. sln ของคุณ

เราย้ายไฟล์. sln ของเราแล้วแก้ไขพา ธ ทั้งหมดภายในเพื่อค้นหาโปรเจ็กต์และ voila! โฟลเดอร์แพ็คเกจของเราจบลงตรงจุดที่เราต้องการ


4

อัพเดทสำหรับ VS 2017:

ดูเหมือนว่าคนในทีม Nuget ในที่สุดก็เริ่มใช้ Nuget ด้วยตนเองซึ่งช่วยให้พวกเขาค้นหาและแก้ไขสิ่งที่สำคัญหลายอย่าง ดังนั้นตอนนี้ (ถ้าฉันไม่ผิดเพราะยังไม่ได้ย้ายไปยังปี 2017) ด้านล่างไม่จำเป็นอีกต่อไป คุณควรจะสามารถตั้งค่า "repositoryPath" เป็นโฟลเดอร์ท้องถิ่นและมันจะทำงาน แม้ว่าคุณจะสามารถปล่อยทิ้งไว้ได้โดยที่ตำแหน่งการคืนค่าเริ่มต้นถูกย้ายออกจากโฟลเดอร์โซลูชันไปยังระดับเครื่อง อีกครั้ง - ฉันยังไม่ได้ทดสอบด้วยตัวเอง

VS 2015 และก่อนหน้า

เพียงคำแนะนำสำหรับคำตอบอื่น ๆ (โดยเฉพาะอย่างยิ่งนี้ ):

ตำแหน่งของโฟลเดอร์แพ็คเกจ NuGet สามารถเปลี่ยนแปลงได้ผ่านการกำหนดค่า แต่ VisualStudio ยังคงอ้างอิงแอสเซมบลีในโฟลเดอร์นี้ค่อนข้าง:

<HintPath>..\..\..\..\..\..\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath>

วิธีแก้ปัญหานี้ (จนกว่าจะมีวิธีแก้ปัญหาที่ดีกว่า) ฉันใช้คำสั่งsubstเพื่อสร้างไดรฟ์เสมือนที่ชี้ไปยังตำแหน่งใหม่ของโฟลเดอร์แพคเกจ:

subst N: C:\Development\NuGet\Packages

ตอนนี้เมื่อเพิ่มแพ็คเกจ NuGet ใหม่การอ้างอิงโครงการจะใช้ตำแหน่งที่แน่นอน:

<HintPath>N:\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath>

บันทึก:

  1. ไดรฟ์เสมือนนั้นจะถูกลบหลังจากรีสตาร์ทดังนั้นให้แน่ใจว่าคุณจัดการกับมัน
  2. อย่าลืมแทนที่การอ้างอิงที่มีอยู่ในไฟล์โครงการ

มันยังคงเป็นกรณีที่วันนี้? ฉันหมายความว่าเราไม่สามารถใช้ตำแหน่ง absoulute สำหรับแพ็คเกจที่เพิ่มใหม่ โซลูชันไดรฟ์เสมือนนี้ดูยุ่งยากสำหรับฉัน
batmaci

อ๋อยังคงเป็นกรณีเป็นอะไรเปลี่ยนแปลง
Kamarey

2
ฉันชอบเส้นทางแบบสัมพัทธ์จริง ๆ แล้ววิธีนี้จะไม่มีข้อขัดแย้งในการควบคุมแหล่งที่มาหากนักพัฒนาที่แตกต่างกันมีที่ตั้งที่แตกต่างกันสำหรับรหัส
jbyrd

ฉันสงสัยว่าทำไมคุณไม่สามารถทำ<HintPath>$(SolutionDir)\packages\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath> แทนการใช้subst
Vinod Srivastav

ฉันต้องการให้แพ็คเกจทั้งหมดอยู่ในที่แห่งเดียวไม่ใช่ต่อโซลูชัน
Kamarey

3

เพียงอัปเดตด้วย Nuget 2.8.3 ในการเปลี่ยนตำแหน่งของแพคเกจที่ติดตั้งฉันเปิดใช้งานแพคเกจคืนค่าจากโซลูชันคลิกขวา แก้ไข NuGet.Config และเพิ่มบรรทัดเหล่านี้:

  <config>
    <add key="repositorypath" value="..\Core\Packages" />
  </config>

จากนั้นสร้างโซลูชันขึ้นมาใหม่ดาวน์โหลดแพ็คเกจทั้งหมดไปยังโฟลเดอร์ที่ฉันต้องการและอัปเดตข้อมูลอ้างอิงโดยอัตโนมัติ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.