При обновлении пакета nuget до новой версии зависимости обновляемого пакета удаляются и восстанавливаются как самая низкая допустимая версия этих зависимых пакетов. Вывод консоли диспетчера пакетов выглядит следующим образом:
Update-Package web.CMS -version 6.5.0-develop-140728152
Updating 'Web.CMS' from version '6.5.0-Trunk-1406031714' to '6.5.0-develop-1407281525' in project 'App.Cms'.
Remove 'Web.CMS 6.5.0-Trunk-1406031714' from project App.Cms.
Remove 'Cms.Assemblies 6.1.379' from project App.Cms.
Remove 'Web 7.3.0' from project App.Cms.
Remove 'Core 8.0.0-Trunk-1406251804' from project App.Cms.
Add 'Core 6.1.0' to project App.Cms.
Add 'Web 6.0.0' to project App.Cms.
Add 'Cms.Assemblies 6.0.530' to project App.Cms.
Add 'Web.CMS 6.5.0-develop-1407281525' to project App.Cms.
Раздел зависимостей файла nuspec пакета Web.CMS выглядит следующим образом, как вы можете видеть, зависимые версии пакетов — это те, которые были установлены как часть обновления пакета.
<dependencies>
<dependency id="Core" version="6.1" />
<dependency id="Web" version="6.0" />
<dependency id="Cms.Assemblies" version="[6.0.530,7)"/>
</dependencies>
Есть ли способ обновить пакет без возврата зависимых пакетов к более старым версиям, как это происходит здесь? Мы можем сделать это, удалив пакет и установив новую версию, что не идеально, однако, поскольку некоторые пакеты используются несколькими проектами в решении, и это нужно делать для каждого проекта индивидуально.
-IgnoreDependencies
и-IncludePrerelease
для Update-Package, чтобы посмотреть, как это повлияет. - person Matt Ward   schedule 28.07.2014