【问题标题】:Project references are not resolved after updating NuGet packges through CLI通过 CLI 更新 NuGet 包后未解析项目引用
【发布时间】:2019-08-05 11:36:30
【问题描述】:

我有一个在 TeamCity 上运行的夜间进程,它将在本地托管的 NuGet repo 上循环遍历我的包,并将所有解决方案中的所有包更新为最新的 prerelease version。

当我在第二天早上提取最新代码时。解决方案构建良好,但未加载我的项目引用。

未解决的项目引用: https://imgur.com/a/v7Klbkm

未解决的代码: https://imgur.com/a/EEzWgUe

我正在使用packages.config 来管理我的 NuGet 包。 为了继续工作,我必须通过手动询问缺失引用的属性或更改.csproj 文件中的某些内容来“重新加载”我的Visual Studio 项目。 这是我的小解决方法,但对于一些有 10 多个项目的解决方案,这变得相当麻烦。

其他更新包的方法工作正常,如果我尝试通过 Visual Studio 更新包,我没有问题。只有在使用 NuGet.exe 命令行实用程序时才会失败。

这是我们在夜间构建期间通过NuGet.exe 上的TeamCity 更新软件包的命令:

NuGet.exe update <path_to_packages.config> -Id <current_package_to_update> -pre -NonInteractive

这是我们正在使用的 NuGet 版本: NuGet Version: 4.8.1.5435

这是日志的摘录:

found  PFW.Utilities  with version  2019.9.0-build0009  in file  C:\Sources\Xmp\ModXmp\packages.config
http://srvppratonexus.prato.be:8888/nexus/service/rest/repository/browse/nuget-prato-prereleases/PFW.Utilities/2019.9.0-build0009
MSBuild auto-detection: using msbuild version '16.1.76.45076' from 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\bin'.

使用的 Feed:

  http://srvppratonexus:8888/nexus/service/local/nuget/nuget-group/
  https://api.nuget.org/v3/index.json
  C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
Attempting to gather dependency information for multiple packages with respect to project `C:\Sources\Xmp\ModXmp\ModXmp.csproj`, targeting `.NETFramework,Version=v4.6.1`


Gathering dependency information took 10.79 sec
Attempting to resolve dependencies for multiple packages.
Resolving dependency information took 0 ms
Resolving actions install multiple packages
Found package 'PFW.Utilities 2019.9.0-build0019' in 'C:\Sources\Xmp\packages'.
Removed package 'PFW.Utilities 2019.9.0-build0009' from 'packages.config'
Successfully uninstalled 'PFW.Utilities 2019.9.0-build0009' from ModXmp
Package 'PFW.Utilities.2019.9.0-build0019' already exists in folder 'C:\Sources\Xmp\packages'
Added package 'PFW.Utilities.2019.9.0-build0019' to 'packages.config'
Successfully installed 'PFW.Utilities 2019.9.0-build0019' to ModXmp
Executing nuget actions took 192.26 ms

【问题讨论】:

    标签: visual-studio nuget


    【解决方案1】:

    当我在第二天早上提取最新代码时。解决方案构建 很好,但是我的项目引用没有加载。

    当你在VS IDE之外调用nuget.exe为使用packages.config格式的项目更新nuget packages时,它不仅修改了packages.config文件,还修改了project file(.csproj)。所以 VS IDE 不能很好地加载它们,除非重新加载。

    不确定您拥有的真正解决方案是什么,您可以Go Tools => option => Environment => Documents,确保您已启用Detect when file is changed outside the environment。然后,当您在 VS IDE 之外修改项目文件时,您可以得到 reload all 对话框。

    重新加载所有对话框如下所示:

    这是我的小解决方案,但对于一些包含 10 多个项目的解决方案 这变得相当麻烦。

    如果由于某种原因没有出现该对话框,您可以使用记事本手动打开一个 .csproj,然后在其中添加一个空行并保存。 VS 会检测到更改并显示对话框,然后单击 reload all 以重新加载解决方案中的所有项目。(对于具有多个项目的解决方案)

    【讨论】:

    • 正如您所建议的,重新加载按预期工作并手动更改 .csproj 文件。但是,在更新 nuget 包时,我的 Visual Studio 实例未打开。我打开 Visual Studio,启动解决方案,恢复我的包,发现没有加载引用。
    • @WeyensL 我很困惑,当解决方案打开是 VS 时,当您在 VS 之外使用 nuget 命令修改 .csproj 时,您是否会收到 reload all 对话框?在这种情况下需要重新加载,因为当我们在 VS 之外对项目文件进行更改时,我们必须重新加载它们以刷新 UI 和其他内容。
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2015-12-11
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多