【发布时间】:2014-09-19 20:42:59
【问题描述】:
将 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.
Web.CMS 包 nuspec 文件的依赖部分如下,您可以看到依赖包版本是作为包更新的一部分安装的版本。
<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选项的一些组合,看看有什么影响。 -
更新 NuGet。此行为已在最近的版本中得到修复。
-
我使用的是最新版本,2.8.5。我的理解是,这个最旧版本的回归是在 v2.8 中引入的
标签: c# visual-studio nuget nuget-package