0

我自己和我的同事在过去几周的某个时候都开始看到这个问题:

构建失败

CSC:警告 CS8032:无法从 /Users/work/dev/git/reporting-model/src/My.Company.Generators/bin/Debug/netstandard2.1 创建分析器 My.Company.Generators.ReportingV2Generator 的实例/My.Company.Generators.dll:无法加载文件或程序集“Microsoft.CodeAnalysis,版本=3.10.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。系统找不到指定的文件.. [/Users/work/dev/git/reporting-model/src/My.Team.Models.ReportingV2/My.Team.Models.ReportingV2.csproj]

/Users/work/dev/git/reporting-model/src/My.Company.Api/SmokeTests/Tests/ContentAskExpertSmokeTest.cs(7,20):错误 CS0234:类型或命名空间名称“模型”不存在于命名空间“My.Team”(您是否缺少程序集参考?) [/Users/work/dev/git/reporting-model/src/My.Company.Api/My.Company.Api.csproj]
... 更多上述“类型或命名空间”错误
...

这发生在 macOS 和 Windows 上。它适用于 Linux(个人机器和内部mcr.microsoft.com/dotnet/sdk:5.0.

从字面上看,源生成器代码/csproj 没有任何变化,它是在两周前自发开始的。我也可以在两个月前的提交中重现这个,所以看起来包中的某些东西可能在外部发生了变化?

4

1 回答 1

4

我直接去微软找到了解决方案。

失败案例的错误是生成器依赖于Microsoft.CodeAnalysis.dll 3.10 版本,而3.10 仅在5.0.300 中提供。您的成功案例似乎使用 SDK 5.0.300,但失败案例使用的是 5.0.204。

您有两种选择来解决此问题:

如果您没有使用 3.10 中为源生成器引入的任何功能,则可以将 Microsoft.CodeAnalysis nuget 包目标降低到 3.9 确保所有构建都使用至少 5.0.300 版本的 SDK

https://github.com/dotnet/roslyn/issues/54710

于 2021-07-13T21:05:43.013 回答