Làm cách nào để cài đặt gói NuGet vào dự án thứ hai trong một giải pháp?


195

Tôi hiện đang làm việc trên một giải pháp ban đầu chứa một dự án ( My.First.Project.Name). Tôi đã cài đặt Castle Windsor bằng cách thực hiện:

Install-Package Castle.Windsor

Tôi vừa mới thêm một dự án ( My.Second.Project.Name) vào giải pháp và cũng muốn cài đặt Castle Windsor vào dự án này, nhưng khi tôi chạy Install-Package Castle.Windsorlại, tôi gặp lỗi:

'Castle.Core 2.5.2' đã được cài đặt
'Castle.Windsor 2.5.2' đã được cài đặt
My.First.Project.Name đã có tham chiếu đến 'Castle.Core 2.5.2'
My.First.Project.Name đã có tham chiếu đến 'Castle.Windsor 2.5.2'

Vì vậy, câu hỏi của tôi là: Làm thế nào để tôi thuyết phục Trình quản lý gói NuGet cài đặt gói vào dự án thứ hai ?

Câu trả lời:


323

Có 3 cách tiếp cận :).
Trong NuGet 1.1 (Bản phát hành mới nhất) chúng tôi đã cải thiện hệ thống đường ống để bạn có thể làm điều này:

Get-Project -All | Install-Package SomePackage

Điều đó sẽ cài đặt "Một số gói" vào tất cả các dự án của bạn. Bạn có thể sử dụng ký tự đại diện để thu hẹp dự án nào:

Get-Project Mvc* | Install-Package SomePackage

Điều đó sẽ sử dụng ngữ nghĩa ký tự đại diện (trong trường hợp này, tìm tất cả các dự án bắt đầu bằng mvc).

Get-Project SomeProject | Install-Package SomePackage

Điều đó sẽ cài đặt một số Gói vào một số Dự án và không có gì khác.


3
và cách tiếp cận thứ 3 chỉ đơn giản là gọi Install-Package SomePackageđể cài đặt nó vào dự án hiện tại.
Jalal

1
Nhưng dự án "hiện tại" là gì?
Zbigniew Wiadro

10
Người được chọn trong danh sách thả xuống
davidfowl

@jalal Điều đó không hiệu quả, chỉ cần thử nó trong VS2015. Gói luôn được cài đặt cho dự án đầu tiên, không phải là dự án hiện tại.
Eternal21

6
@ Eternal21 Bạn có thể chọn dự án hiện tại từ trình đơn thả xuống của dự án trong cửa sổ Gói quản lý gói.
Jalal

141

Có hai cách tiếp cận.

Như bạn đã biết, Bảng điều khiển quản lý gói có một danh sách thả xuống liệt kê các dự án trong giải pháp của bạn.

Cách tiếp cận khác là sử dụng cờ -Project. Điều tuyệt vời là nó mang lại cho bạn Intellisense với tên dự án! Ví dụ:

Install-Package SomePackage -Project MvcApplication2

82

Câu trả lời là, đơn giản, mù quáng đơn giản.

"Bảng điều khiển quản lý gói" có trình đơn thả xuống có tên "Dự án mặc định" trong thanh công cụ của nó, thay đổi dự án ở đó để My.Second.Project.Namesau đó cho phép Install-Package Castle.Windsorcài đặt gói vào dự án thứ hai.


2
bạn sử dụng trạng từ là không thể tin được, không nghi ngờ gì, thú vị
l --''''''--------- '' '' '' '' '' '' '

15

Trong Visual Studio 2015 (kể từ Nuget v3.1.2), cú pháp hiện là:

Install-Package ThePackage -ProjectName YourProjectName

Lưu ý: Tên dự án vs Dự án


8

Trong Visual Studio, bạn có thể đi đến Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. Từ đó, chọn Gói Nuget bạn muốn chia sẻ giữa các dự án và nhấp Manage. Điều này sẽ cho phép bạn thêm Gói NuGet được cài đặt cụ thể vào bất kỳ dự án nào khác mà bạn muốn.


1
Tôi chưa bao giờ biết về cửa sổ này. Siêu mạnh, đẹp!
willem

Tôi đã dành một giờ tìm kiếm xung quanh chức năng này! Cảm ơn bạn rất nhiều vì điều này!
Marco Guignard

6

Nếu bạn chỉ cần sao chép các gói từ dự án hiện tại sang dự án mới, chỉ cần sao chép và / hoặc sửa đổi tệp gói.config sang dự án mới và chạy Update-Package -reinstall -Project YourProjectName


0

Ngoài ra còn có tùy chọn để buộc cài đặt lại. Với một số vấn đề nhất định, điều này đã giúp tôi.

Update-Package Microsoft.Owin -Reinstall
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.