更新到 Visual Studio 版本 16.8.2 后出现 Postsharp 构建错误

Postsharp Build Errors after Update to Visual Studio Version 16.8.2

将 visual studio 更新到版本 16.8.2 后,我使用 Post Sharp 的解决方案不再构建。我没有升级任何项目以使用 .Net 5。以下是我看到的错误:

严重性代码说明项目文件行抑制状态 找不到错误 CS0006 元数据文件 'C:\Dev\repos\hinge\HingeSolution\HingeApi\bin\Debug\netcoreapp3.1\HingeApi.dll' HingeApi-tests C:\Dev\repos\hinge\HingeSolution\HingeApi-tests\CSC 1 N/A 错误 MSB4064 “PrepareForReadyToRunCompilation”任务不支持“RuntimeGraphPath”参数。验证任务上存在该参数,并且它是一个可设置的 public 实例 属性。 HingeApi C:\ProgramData\PostSharp\CrossGenPaths\sdk5.0.100-netcoreapp5.0-r5.0.0-win-x64\CrossGen.proj 11
错误 MSB4063 无法使用其输入参数初始化“PrepareForReadyToRunCompilation”任务。 HingeApi C:\ProgramData\PostSharp\CrossGenPaths\sdk5.0.100-netcoreapp5.0-r5.0.0-win-x64\CrossGen.proj 11
错误进程“dotnet”失败,退出代码为 1。HingeApi C:\Users\dbdav.nuget\packages\postsharp.5.4\build\PostSharp.targets 381 错误错误:未处理的异常(PostSharp.Compiler.Hosting.CommandLine.dll 6.5.4 版本 | .NET Core 5.0.0 (X64)):值不能为 null 或空字符串。 (参数'value')详情见下文。 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
错误 System.ArgumentException:值不能为 null 或空字符串。 (参数'value') HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
NuGet.Versioning.NuGetVersion.Parse(字符串值)HingeApi C 处出错:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
^f/gziTthOsZk 中的 PostSharp.Sdk.Extensibility.PlatformContext.^TTQPa/Ij() 错误:第 354 行 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
^f/gziTthOsZk 中 PostSharp.Sdk.Extensibility.PlatformContext.^pFnf8wEt() 错误:第 114 行 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
^hW2eIAWj 中的 PostSharp.Sdk.Extensibility.Project.^pFnf8wEt(ProjectConfiguration[] _0, ProjectInvocationParameters _1) 错误:第 795 行 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
^hW2eIAWj 中 PostSharp.Sdk.Extensibility.Project.^pFnf8wEt(ProjectInvocationParameters _0) 错误:第 570 行 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
^hW2eIAWj 中的 PostSharp.Sdk.Extensibility.Project.LoadProject(ProjectInvocationParameters projectInvocationParameters, Domain& domain) 错误:第 541 行 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
C:\src\PostSharp-65\Public\Core\PostSharp.Compiler.Hosting\PostSharpObject.cs:line 256 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1
中 PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation projectInvocation) 出错 C:\src\PostSharp-65\Public\Core\PostSharp.Compiler.Hosting\Program.cs:line 957 HingeApi C:\Dev\repos\hinge\HingeSolution\HingeApi\POSTSHARP 1

中的 PostSharp.Hosting.Program.ExecuteImpl() 错误

我尝试过重建、清理和构建。有人解决过这个问题吗?

请尝试测试这些:

1) 将您的项目定位到 .net5,然后删除 bin 和 obj 文件夹,之后,再次重建您的项目。

2)删除C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio.0_xxxx\ComponentModelCache

下的所有缓存文件

3)Extensions-->Manage Extensions--> 下禁用 PostSharp 扩展已安装,关闭VS,重启VS以启用扩展。

4)如果有新的发布版本就更新扩展或者重新安装扩展。

如果所有步骤都不起作用,我认为您应该联系 PostSharp 团队。

由于 MSBuild 更改,PostSharp 6.7 与 .NET 5.0 SDK 不兼容。 .NET 5.0 SDK 在升级到 VS 16.8 时由 Visual Studio 安装程序安装。

您可以使用 global.json 继续使用 3.1 SDK 或使用 PostSharp 6.8。还处于预览阶段,但 RC 应该很快就会发布。

更多信息是available here

编辑:Postsharp 6.8 RC 已发布。