【问题标题】:NuGet reinstall updates the package to newer versionNuGet 重新安装将包更新到较新版本
【发布时间】:2021-03-12 02:38:34
【问题描述】:

我已清除所有本地 NuGet 缓存,Visual Studio 16.9 无法恢复包。

上面写着:

所有包都已安装,没有什么可恢复的。

当我构建项目时,由于 NuGet 包没有恢复,我收到很多错误。

该项目必须包含与 csproj 文件内的 PackageReferences 中完全相同的包,并且我已阅读到 executing Update-Package -reinstall 使用包管理器控制台可以提供帮助命令。

Install-Package 命令不提供强制重新安装的选项,因此请改用 Update-Package -reinstall。

我试过了,现在我的日志中有这个:

项目的当前包源中没有可用的包更新......

更新?我不想更新任何东西...

已恢复 D:\Dev\MyProject01\MyProject01.csproj(在 29 毫秒内)。

已从 MyProject01 成功卸载“Acr.UserDialogs 7.1.0.475”

已成功将“Acr.UserDialogs 7.1.0.481”安装到 MyProject01

如何重新安装?似乎更像是将包更新到较新的版本...

如何重新安装相同的软件包?

更新

当我在解决方案资源管理器中使用 Rebuild 命令时,我看到的就是这个。

【问题讨论】:

    标签: visual-studio nuget


    【解决方案1】:

    实际上,右键单击解决方案-->恢复 nuget 包是针对缺少的项目 packages 文件夹和 packages.config。并且它不能单独检测全局缓存丢失的数据包。

    这就是微软启用这两个设置的原因:

    因此您不必担心还原步骤。只需点击 Rebuild 按钮而不是 Build 按钮。两个恢复设置都在重建过程中。

    项目必须包含与它们在 csproj 文件中的 PackageReferences

    update-package -reinstall 命令适用于具有packages.config nuget 管理格式的非 sdk 样式项目,并且始终重新安装相同的版本。我想知道您的解决方案是否有使用packages.config 的非sdk 项目,并且该项目可以使用该命令。

    我有一个net framework 4.5.2 的非 SDK 项目。见:

    但是update-package -reinstall 不适用于 new-sdk 项目。

    ConsoleApp1是一个net core项目。

    所以,不知道你下面是不是用Update-Package。该命令是将旧版本更新为新版本,该版本可用于非 sdk 项目和新 sdk 项目。

    结论

    下次遇到问题时,只需点击重建按钮即可。它更容易。

    【讨论】:

    • @Nestor,1) 先尝试clean nuget caches 或删除C:\Users\xxx\.nuget\packages 下的所有缓存文件 2) 关闭VS,删除.vs 隐藏文件夹、binobj 文件夹 3)如果您的解决方案有一个使用packages.config 格式的项目,请尝试再次运行 update-packages -reinstall。
    • 我不使用packages.config,只使用PackageReference
    【解决方案2】:

    尝试删除项目的 obj/ 目录(这是 NuGet 存储有关它决定使用哪些包的信息的位置),然后重新运行恢复。

    如果您有源依赖项(即ProjectReference),您可能还需要删除它们的obj/ 目录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多