【问题标题】:NuGet in Package Manager Console installs old version of package by default包管理器控制台中的 NuGet 默认安装旧版本的包
【发布时间】:2021-10-06 22:23:13
【问题描述】:

我们有一个用于类库的内部 NuGet 存储库。我创建了一个包 MyPackage 版本 1.0.0.0 有一个错误,所以我推送了包的新版本(或修订版)1.0.0.1。

现在,当我创建一个新项目并使用“管理 NuGet 包”对话框时,我会在安装包时获得最新版本 (1.0.0.1)。但是,当我将包管理器控制台用于另一个新项目并键入 Install-Package MyPackage 时,默认情况下会得到版本 1.0.0.0。

为什么会这样?我在 NuGet 文档中找不到任何解释为什么会发生这种情况的内容,所以这似乎是 NuGet.exe 中的一个错误。

【问题讨论】:

  • 我也遇到了这个问题,下面的修复没有帮助 - 我删除了缓存的版本,然后“安装”,仍然得到旧版本。但是,运行更新确实会将包更新到最新版本。有人解决这个问题吗?
  • 我在这里提出了关于 Nuget codeplex 的问题:nuget.codeplex.com/workitem/3747 支持它,以便有人修复错误!
  • 谢谢!我投了赞成票。我现在无法尝试下面建议的解决方案,但从与您在 CodePlex 的问题相关的问题来看,它现在似乎是 NuGet 中的一个错误。

标签: nuget


【解决方案1】:

尝试运行 Update-Package 命令。

包可能是在本地“缓存”的,当你使用“安装”时,它只获取缓存的版本。

您也可以通过以下方式验证这一点:

(窗口)

C:\Users\~MyUserName~\AppData\Local\NuGet\Cache\

或(Linux)

/Users/MyUserName/.nuget/packages/

(当然是替换~MyUserName~)

并从那里删除包...然后“安装”。 (想法是,如果它不在缓存中,它会回到服务器获取它)

【讨论】:

  • 担心这对我不起作用 - 我从缓存中删除了所有包,然后在我们的一个私有包上安装包,得到一个旧版本。之后运行 update-package 会给出最新版本,但 install-package 应该首先给出最新版本。它适用于 nuget.org,但不适用于我们的私人服务器 :(
  • //install-package 应该首先提供最新版本// ...... 那就是“d@mned if you do, d@mned if you don' t" 原始开发人员的场景。这就是为什么存在“更新包”......以移动到更高版本。所以我对缓存部分不感兴趣,但它在某个地方“记住”了安装版本的方式。由于我对所有场景知之甚少,我可以支持你的理解,但可能(在某个地方)有一种场景可能会搞砸最终开发人员。
  • 我知道你的意思,但似乎 90% 的时间当你安装一个包时,你想要最新的版本。如果你想要一个旧版本,你有 -version 标志来选择一个特定的旧版本。无论哪种方式,对 nuget.org 运行命令都会提供最新版本是没有意义的,但对我们的本地服务器运行命令却没有。
  • 这个答案没有得到足够的爱。我在 Devops 中的 Artifacts 存储库中遇到了同样的问题:UI 和 nuget 列表向我显示了最近更新的包,但“nuget install”总是安装以前的版本。删除缓存立即为我解决了这个问题。
【解决方案2】:

有关是否有人遇到此问题的信息,这是 2.7 中的一个错误,已在 2.8 中修复。详情在:https://nuget.codeplex.com/workitem/3684

将您的客户端升级到 2.8 将解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多