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

В настоящее время я работаю над решением, которое изначально содержало один проект (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 установить пакет во второй проект?


person Rob    schedule 11.02.2011    source источник


Ответы (7)


Есть 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 и ничего больше.

person davidfowl    schedule 13.02.2011
comment
и 3-й подход просто вызывает Install-Package SomePackage, чтобы установить его в текущий проект. - person Jalal; 02.06.2012
comment
Но каков текущий проект? - person Chris W; 27.08.2015
comment
Выбранный в раскрывающемся списке - person davidfowl; 31.08.2015
comment
@jalal Это не работает, просто попробовал в VS2015. Пакет всегда устанавливается в первый проект, а не в текущий. - person Eternal21; 30.03.2016
comment
@ Eternal21 Вы можете выбрать текущий проект из раскрывающегося списка проекта в окне консоли диспетчера пакетов. - person Jalal; 31.03.2016

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

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

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

Install-Package SomePackage -Project MvcApplication2
person Haacked    schedule 13.02.2011

Ответ на удивление прост.

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

person Rob    schedule 11.02.2011
comment
использование наречия невероятно, несомненно, восхитительно - person Alex Gordon; 05.03.2017

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

Install-Package ThePackage -ProjectName YourProjectName

Примечание: -Project Name vs -Project

person Tom Studee    schedule 25.08.2015

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

person SaiyanGirl    schedule 09.04.2015
comment
Я никогда не знал об этом окне. Супер мощный, красивый! - person willem; 29.04.2016
comment
Я потратил час на изучение этой функциональности! Большое вам спасибо за это! - person Marco Guignard; 26.07.2018
comment
Я не вижу кнопки "Управление". Где это должно быть? - person ROBERT RICHARDSON; 25.11.2020

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

person AdvanTiSS    schedule 21.11.2015

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

Update-Package Microsoft.Owin -Reinstall
person Damian Vogel    schedule 31.10.2017