NuGet - управление и удаление пакетов с несколькими версиями в одном решении

СЦЕНАРИЙ

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

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

Ответы

Ответ 1

Вы можете выполнить это в диспетчере пакетов 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

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

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