【问题标题】:package.config update does not update the referencespackage.config 更新不更新引用
【发布时间】:2017-09-14 17:21:50
【问题描述】:

我有多个项目引用同一个 NuGet 包。当我获得最新代码时,我意识到其中一个项目有一个更新的 package.config 并且还更新了对该包提供的 Dll 的引用。

现在,我还在其他项目上更新了 package.config,希望在我对 NuGet 引擎进行升级时能够看到这一点并为我获取新的 DLL。好吧,它没有发生。之后我尝试了以下事情,但都没有奏效:

  1. 删除旧版DLL再做Restore包
  2. 删除包文件夹,重新启动我的 VS 2015 并恢复包

另外,有趣的是,当我去管理 Nuget 包并查看我需要新 DLL 的包时,它显示它已经是新版本,我不需要升级它。

有什么方法可以让 NuGet 引擎升级这些包?

【问题讨论】:

    标签: c# dll nuget nuget-package nuget-package-restore


    【解决方案1】:

    仅编辑 packages.config 文件不会导致 Visual Studio 对您的项目进行任何更改。此外,NuGet 还原不会修改您的项目。 NuGet 恢复只是下载 NuGet 包并使它们可用于您的项目。

    我只使用 Visual Studio 中的 NuGet 包管理器或包管理控制台来更新所需项目中的 NuGet 包,而不是编辑 packages.config 文件。

    其他替代方法包括更新项目文件 (.csproj) 以使用正确的更新程序集引用。或者您可以运行Update-Package -reinstall 来强制卸载 NuGet 包并在项目中重新安装。这将修复程序集引用。

    【讨论】:

    • "Update-Package -reinstall" 在我手动编辑 packages.config 文件后,肯定会导致我丢失的引用被添加到我的项目中。
    • 在我的情况下,“Update-Package -reinstall”已经恢复了我在 packages.config, VS 2017 中所做的手动更改
    【解决方案2】:

    如果你的解决方案可以被 Visual Studio 2017 打开,我建议使用最新的 PackageReference 来管理 nuget。 Packages.config 有几个缺点,PackageReference 解决了这些问题。

    这是迁移到 PackageReference 的解决方案: https://github.com/NuGet/Home/wiki/Packages.config-to-PackageReference-Migrator

    另外,你可以使用这个 vs 扩展: https://marketplace.visualstudio.com/items?itemName=TaylorSouthwickMSFT.NuGetPackagetoProjectjsonConverter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 2013-12-02
      相关资源
      最近更新 更多