将代码移动到新计算机后,无法在 Visual Studio 2022 年使用 PostSharp 构建解决方案

Unable to build solution using PostSharp in Visual Studio 2022 after moving code to new computer

我最近才开始使用新安装的 PC,但在 Visual Studio 2022 年使用 PostSharp(版本 6.10.5)构建解决方案时遇到问题。在我的旧计算机上构建相同的解决方案没有问题,而且奇怪的是我最近也安装了一台新计算机的同事在构建解决方案时没有问题。

Visual Studio 会抛出一堆 NU1101 和 NU1102 错误,例如:

它还提示了以下关于 PostSharp 的信息,我不确定如何修复?

The process "C:\Program Files\dotnet\dotnet.exe" failed with exit code 1.    
Restore of compiler dependencies failed. To disable compiler dependencies restore use PostSharpDependencyRestoreDisabled=True MSBuild property. 
Unable to start PostSharp due to previous error encountered while creating fallback package directory.

我们通过私有 Nuget 包包含 PostSharp,我们在该线程中输入后像这样引用 PostSharp:

 <PackageReference Include="PostSharp" Version="6.10.5" PrivateAssets="none" />

如果我排除与 PostSharp 相关的所有内容,解决方案构建得很好,但不包含 PostSharp。非常感谢此处的任何帮助。

/马丁

如果 NuGet 错误出现在构建输出中,并且紧接在表明 PostSharp 的依赖项恢复失败的错误之前(从屏幕截图中看不出来),PostSharp 正在尝试为机器上的第一个构建收集其引用。

PostSharp 通过 运行在它所依赖的包的当前设置下还原 NuGet 来做到这一点(例如 System.Runtime.CompilerServices.Unsafe)。

由于为构建启用的 NuGet 源似乎只包含“离线包”,因此无法找到所需的包,因为这些包不在您的计算机上。

解决方案是 运行 在启用 NuGet.Org 包源的情况下构建一次。然后 PostSharp 应该能够下载其依赖项并且所有后续构建应该 运行 没有问题(除非您升级到 PostSharp 的新次要版本)。 NuGet.org包源的存在可能是机器之间的差异导致这个问题。

如我对上述答案的评论中所述,我的问题的解决方案是:

  1. 删除我们自己的 nuget.config 文件(即使它包含对 nuget.org 包源的引用)
  2. 在工具 --> Nuget 包管理器 --> 包管理器设置 --> 包源Visual Studio 中添加对 nuget.org 包源 (https://api.nuget.org/v3/index.json) 的引用
  3. 再次构建解决方案
  4. 再次将我们自己的 nuget.config 文件添加到解决方案中