ฉันจะติดตั้งแพคเกจ NuGet ลงในโครงการที่สองในโซลูชันได้อย่างไร


195

ขณะนี้ฉันกำลังทำงานกับโซลูชันที่เริ่มต้นมีหนึ่งโครงการ ( My.First.Project.Name) ฉันได้ติดตั้ง Castle Windsor โดยดำเนินการ:

Install-Package Castle.Windsor

ฉันเพิ่งเพิ่มโครงการอื่น ( My.Second.Project.Name) ลงในโซลูชันและต้องการติดตั้ง Castle Windsor ในโครงการนี้ด้วยเช่นกัน แต่เมื่อฉันทำงานInstall-Package Castle.Windsorอีกครั้งฉันได้รับข้อผิดพลาด:

'Castle.Core 2.5.2' ติดตั้งแล้ว
'Castle.Windsor 2.5.2' ติดตั้ง
My.First.Project.Name แล้วมีการอ้างอิงถึง 'Castle.Core 2.5.2'
My.First.Project.Name มี อ้างอิงถึง 'Castle.Windsor 2.5.2'

ดังนั้นคำถามของฉันคือฉันจะโน้มน้าวให้ NuGet Package Manager ติดตั้งแพคเกจลงในโครงการที่สองได้อย่างไร

คำตอบ:


323

มี 3 วิธี :)
ใน NuGet 1.1 (รีลีสล่าสุด) เราได้ปรับปรุงพาวเวอร์ไลน์เซลล์เชลล์เพื่อให้คุณทำสิ่งนี้ได้:

Get-Project -All | Install-Package SomePackage

ที่จะติดตั้ง "SomePackage" ในโครงการของคุณทั้งหมด คุณสามารถใช้อักขระตัวแทนเพื่อ จำกัด โครงการที่:

Get-Project Mvc* | Install-Package SomePackage

ที่จะใช้ความหมายไวด์การ์ด (ในกรณีนี้ค้นหาโครงการทั้งหมดที่เริ่มต้นด้วย mvc)

Get-Project SomeProject | Install-Package SomePackage

ที่จะติดตั้ง SomePackage ใน SomeProject และไม่มีอะไรอื่น


3
และวิธีที่ 3 คือเพียงแค่เรียกInstall-Package SomePackageให้ติดตั้งในโครงการปัจจุบัน
Jalal

1
แต่โครงการ "ปัจจุบัน" คืออะไร
Chris W

10
รายการที่เลือกในรายการดรอปดาวน์
davidfowl

@jalal ไม่ได้ผลลองได้ใน VS2015 แพคเกจจะถูกติดตั้งในโครงการแรกเสมอไม่ใช่โครงการปัจจุบัน
Eternal21

6
@ Eternal21 คุณสามารถเลือกโครงการปัจจุบันจากรายการดรอปดาวน์ในหน้าต่าง Package Manager Console
Jalal

141

มีสองวิธี

ดังที่คุณได้เรียนรู้แล้ว Package Manager Console มีรายการแบบหล่นลงซึ่งแสดงรายการโครงการในโซลูชันของคุณ

อีกวิธีคือใช้แฟล็ก -Project สิ่งที่ดีเกี่ยวกับมันคือมันช่วยให้คุณ Intellisense กับชื่อโครงการ! ตัวอย่างเช่น:

Install-Package SomePackage -Project MvcApplication2

82

คำตอบคือง่ายน่าอายสุ่มสี่สุ่มห้า

"Package Manager Console" มีรายการแบบหล่นลงที่ชื่อว่า "Default Project" ในแถบเครื่องมือการเปลี่ยนโครงการที่นั่นเพื่อMy.Second.Project.Nameอนุญาตให้Install-Package Castle.Windsorติดตั้งแพคเกจลงในโครงการที่สอง


2
คุณใช้คำวิเศษณ์อย่างไม่น่าเชื่อไม่ต้องสงสัยมีความสุข
l

15

ใน Visual Studio 2015 (ณ Nuget v3.1.2) ไวยากรณ์อยู่ในขณะนี้:

Install-Package ThePackage -ProjectName YourProjectName

หมายเหตุ: -Project Name vs -Project


8

ใน Visual Studio Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solutionคุณสามารถไปที่ จากนั้นเลือกแพคเกจ Nuget Manageคุณต้องการที่จะแบ่งระหว่างโครงการและคลิก สิ่งนี้จะช่วยให้คุณสามารถเพิ่มแพ็คเกจ NuGet ที่ติดตั้งลงในโครงการอื่นที่คุณต้องการ


1
ฉันไม่เคยรู้เกี่ยวกับหน้าต่างนี้ สุดยอดพลัง!
วิลเล็ม

ฉันใช้เวลาหนึ่งชั่วโมงดูรอบ ๆ ฟังก์ชั่นนี้! ขอบคุณมากสำหรับสิ่งนี้!
Marco Guignard

6

หากคุณต้องการคัดลอกแพ็กเกจจากโปรเจ็กต์ที่มีอยู่ไปยังโปรเจ็กต์ใหม่เพียงแค่คัดลอกและ / หรือแก้ไขไฟล์ packages.config ไปยังโปรเจ็กต์ใหม่และรัน Update-Package -reinstall -Project YourProjectName


0

นอกจากนี้ยังมีตัวเลือกในการบังคับให้ติดตั้งใหม่ ด้วยปัญหาบางอย่างสิ่งนี้ช่วยฉัน

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