NuGet - управление и удаление пакетов нескольких версий в одном решении - PullRequest
15 голосов
/ 30 марта 2012

СЦЕНАРИЙ

Одно решение VS с n проектами.Проект A ссылается на пакет Y v1, Проект B ссылается на пакет Y v2.Теперь невозможно обновить все ссылки на пакет Y для всех проектов в решении с помощью диалогового окна управления пакетами NuGet на уровне решения, это можно сделать только тогда, когда все проекты ссылаются на одну и ту же версию пакета Y. Не большойЯ имею дело только с двумя проектами, но я имею дело со многими проектами, которые из-за плохого управления пакетами ссылаются на многие версии пакетов, когда все они должны ссылаться на одну и ту же версию.

Прежде чем посвятить день написанию консольного приложения.для автоматического обновления всех файлов package.config для решения, чтобы на каждый указанный пакет ссылались только через его последнюю версию (последнюю, а не самую последнюю, с исключениями / предостережениями и т. д.) .... есть ли инструмент / метод для выполненияэто уже?Или какой-то другой подход, о котором я не знаю?

Ответы [ 2 ]

10 голосов
/ 31 марта 2012

Это можно сделать в диспетчере пакетов Nuget для решения (чтобы найти меню, щелкните правой кнопкой мыши решение или выберите «Инструменты-> Диспетчер пакетов библиотеки»).Вкладка «Обновление» в этом диалоговом окне предложит обновить несколько проектов, к которым применимо обновление.То же самое относится и к удалению с вкладки «Установлено».

Или с открытым решением откройте консоль NuGet, запустите «Update-Package», чтобы обновить все пакеты для всех проектов.Он также может работать для обновления определенных пакетов / проектов:

Update-Package [-Id] <string> [-IgnoreDependencies] [-ProjectName <string>] [-Version <string>] [-Safe] [-Source <string>] [-IncludePrerelease]

Он найдет те же обновления, что и в диалоговом окне, просто убедитесь, что в разделе «Источник пакета» выбран правильный канал (или «Все»):"выпадающий.

пример:

PM> install-package NUnit -version 2.5.9.10348 -ProjectName ProjectA
Successfully installed 'NUnit 2.5.9.10348'.
Successfully added 'NUnit 2.5.9.10348' to ProjectA.

PM> install-package NUnit -version 2.5.10.11092 -ProjectName ProjectB
Successfully installed 'NUnit 2.5.10.11092'.
Successfully added 'NUnit 2.5.10.11092' to ProjectB.

PM> update-package
Updating 'NUnit' from version '2.5.9.10348' to '2.6.0.12054' in project 'ProjectA'.
Successfully removed 'NUnit 2.5.9.10348' from ProjectA.
Successfully installed 'NUnit 2.6.0.12054'.
Successfully added 'NUnit 2.6.0.12054' to ProjectA.
Successfully uninstalled 'NUnit 2.5.9.10348'.
Updating 'NUnit' from version '2.5.10.11092' to '2.6.0.12054' in project 'ProjectB'.
Successfully removed 'NUnit 2.5.10.11092' from ProjectB.
Successfully added 'NUnit 2.6.0.12054' to ProjectB.
Successfully uninstalled 'NUnit 2.5.10.11092'.
2 голосов
/ 30 марта 2012

Во-первых, только изменение XML-файлов недостаточно для NuGet, чтобы изменить ссылки. На самом деле, иногда вы получаете ошибки, когда изменяете файлы packages.config вручную. консоль диспетчера пакетов имеет возможность обновлять все пакеты в решении; Вы можете просто вызвать команду «Get-Project -All | Update-Package».

И, во-вторых, перед вызовом этой команды убедитесь, что у вас есть надлежащие источники пакетов.

...