NuGet для решений с несколькими проектами
Предположим, что у меня есть решение с тремя проектами:
Некоторые из пакетов NuGet, которые я использую, будут применяться ко всем 3 проектам. Некоторые из них будут применяться только к пользовательским интерфейсам и тестам, а некоторые будут применяться только к тестам (например, NUnit).
Что такое правильный способ установить это с помощью NuGet?
- Должен ли я использовать ссылку "Добавить библиотечный пакет" для всех трех проектов в любое время, когда мне нужна ссылка?
- Должен ли я использовать "Добавить ссылку на библиотечный пакет" в первый раз, когда мне нужен пакет, а затем использовать Add Reference- > Browse для последующего использования?
В любом случае, сколько файлов packages.config должно быть у меня?
Ответы
Ответ 1
Для кого-то, спотыкающегося об этом, теперь есть следующий вариант:
Щелкните правой кнопкой мыши свое решение > Управление пакетами NuGet для решения...
... Или:
Инструменты > Диспетчер пакетов библиотеки > Управление пакетами NuGet для решения...
И если вы перейдете в область Установленные пакеты, вы можете "Управлять" единый пакет для каждого проекта в решении.
Ответ 2
Используйте консоль для таргетинга нескольких проектов
Tools > Library Package Manager > Package Manager Console
затем используйте эту команду
Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME
например
Get-Project Core,UI | Install-Package FluentDateTime
Ответ 3
Эта сладкая сделка работает для меня:
PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
$_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
| ForEach-Object {Install-Package MvvmLight -project $_.Name}
Ответ 4
Если вы хотите установить пакет через несколько решений, я написал удобный скрипт Powershell для этого, см. Здесь.
Вы даже можете отфильтровать команду Get-Project -All
и настроить подмножество списка проектов.
Ответ 5
Вам следует использовать "Добавить ссылку на библиотечный пакет" для всей вашей внешней библиотеки для каждого проекта в вашем решении.
В итоге вы получите файл package.config для каждого проекта.
Однако вы будете загружать пакет только один раз и повторно использовать его локально для всех ваших других проектов.
Ответ 6
В Консоль диспетчера пакетов вы можете написать следующую команду :
Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package
PACKAGE_NAME -Version VERSION
Вы можете использовать эту команду для установки или обновления (Update-Package)