Як встановити пакет 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 встановити пакет у другому проекті ?

Відповіді:


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встановити його на поточний проект.
Джалал

1
Але що таке "поточний" проект?
Кріс Ш

10
Вибраний у спадному меню
davidfowl

@jalal Це не працює, просто спробував це у VS2015. Пакет завжди встановлюється на перший проект, а не на поточний.
Вічний21

6
@ Eternal21 Ви можете вибрати поточний проект із випадаючого проекту у вікні консолі Package Manager.
Джалал

141

Є два підходи.

Як ви вже дізналися, у консолі диспетчера пакунків випадає список, в якому перераховані проекти вашого рішення.

Інший підхід полягає у використанні прапора -Project. Приємна річ у тому, що він дає вам Intellisense із назвами проектів! Наприклад:

Install-Package SomePackage -Project MvcApplication2

82

Відповідь, невпинно, сліпо просто.

"Консоль диспетчера пакунків" на панелі інструментів має випадаюче меню з назвою "Проект за замовчуванням", змінивши проект там, щоб My.Second.Project.Nameпотім Install-Package Castle.Windsorвстановити пакет у другий проект.


2
Ви використовуєте прислівник неймовірно, безперечно,
приємно

15

У Visual Studio 2015 (станом на Nuget v3.1.2) синтаксис тепер:

Install-Package ThePackage -ProjectName YourProjectName

Примітка: -проект Ім'я проти -project


8

У Visual Studio можна зайти Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. Звідти виберіть Nuget Package, яким ви хочете поділитися між проектами, і натисніть Manage. Це дозволить вам додати певний встановлений пакет NuGet до будь-яких інших проектів.


1
Я ніколи не знав про це вікно. Супер потужний, приємний!
Віллем

Я витратив одну годину, переглядаючи цю функціональність! Дякую за це!
Марко Гіньярд

6

Якщо вам просто потрібно скопіювати пакети з існуючого проекту в новий, просто скопіюйте та / або модифікуйте пакунок.config файл до нового проекту та запустіть Update-Package -reinstall -Project YourProjectName


0

Також є можливість примусити перевстановити. З певними проблемами це мені допомогло.

Update-Package Microsoft.Owin -Reinstall
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.