Как установить пакет NuGet во второй проект решения?

195

В настоящее время я работаю над решением, которое изначально содержало один проект ( My.First.Project.Name). Я установил Замок Виндзор, выполнив:

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 (последний выпуск) мы улучшили конвейеризацию PowerShell, так что вы можете сделать это:

Get-Project -All | Install-Package SomePackage

Это установит SomePackage во все ваши проекты. Вы можете использовать подстановочные знаки, чтобы определить, какие проекты:

Get-Project Mvc* | Install-Package SomePackage

При этом будет использоваться семантика подстановочных знаков (в этом случае найдите все проекты, которые начинаются с mvc).

Get-Project SomeProject | Install-Package SomePackage

Это установит SomePackage в SomeProject и ничего больше.

davidfowl
источник
3
и 3-й подход просто призывает Install-Package SomePackageустановить его на текущий проект.
Джалал
1
Но что такое «текущий» проект?
Крис Вт,
10
Выбранный в выпадающем
списке
@jalal Это не работает, только что попробовал в VS2015. Пакет всегда устанавливается в первый проект, а не в текущий.
Eternal21
6
@ Eternal21 Вы можете выбрать текущий проект из раскрывающегося списка в окне консоли диспетчера пакетов.
Джалал
141

Есть два подхода.

Как вы уже узнали, в консоли диспетчера пакетов есть раскрывающийся список, в котором перечислены проекты в вашем решении.

Другой подход заключается в использовании флага -Project. Приятно то, что он дает вам Intellisense с именами проектов! Например:

Install-Package SomePackage -Project MvcApplication2
Haacked
источник
82

Ответ, смущающе, слепо прост.

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

обкрадывать
источник
2
Вы Наречие использование невероятно, бесспорно, восхитительное
л --''''''--------- «» «» «» «» «» «»
15

В Visual Studio 2015 (начиная с Nuget v3.1.2) синтаксис теперь:

Install-Package ThePackage -ProjectName YourProjectName

Примечание: -Проектное имя vs -Проектное

Том Студи
источник
8

В Visual Studio вы можете перейти на Tools -> NuGet Package Manager -> Manage NuGet Packages for the entire Solution. Оттуда выберите пакет Nuget, которым вы хотите поделиться между проектами, и нажмите Manage. Это позволит вам добавить определенный установленный пакет NuGet в любой другой проект.

SaiyanGirl
источник
1
Я никогда не знал об этом окне. Супер мощный, приятно!
Виллем
Я потратил один час, осматривая эту функциональность! Большое спасибо за это!
Марко Гиньярд,
6

Если вам просто нужно скопировать пакеты из существующего проекта в новый, просто скопируйте и / или измените файл packages.config в новый проект и запустите Update-Package -reinstall -Project YourProjectName

AdvanTiSS
источник
0

Существует также возможность принудительной переустановки. С определенными проблемами это помогло мне.

Update-Package Microsoft.Owin -Reinstall
Дамиан Фогель
источник