【问题标题】:How to prevent nuget from reverting to older versions of dependent packages when updating a package更新包时如何防止nuget恢复到旧版本的依赖包
【发布时间】: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


【解决方案1】:

这已通过包含 -IgnoreDependencies 开关得到修复:

Update-Package web.CMS -version 6.5.0-develop-140728152 -IgnoreDependencies

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2022-11-10
    • 2019-01-11
    • 2014-07-19
    • 2021-12-18
    相关资源
    最近更新 更多