Roslynator运行失败:无法识别C#源生成器自动生成属性
问题分析与解决方案
这不是Roslyn分析器/源生成器单遍处理的固有问题,而是Roslynator CLI在处理.NET Framework项目时,对项目引用的源生成器加载逻辑和常规MSBuild/dotnet build存在差异,可通过以下方式修复:
1. 指定正确的MSBuild路径
Roslynator默认可能使用.NET Core SDK的MSBuild,而.NET Framework项目的源生成器引用在该环境下无法被正确识别。执行roslynator fix时,通过--msbuild-path参数指向对应Visual Studio版本的.NET Framework MSBuild路径,例如:
roslynator fix MY_APP_CSPROJ --verbosity diagnostic --msbuild-path "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"
(路径需根据你的VS版本和安装位置调整)
2. 调整项目引用配置
在应用类库项目的项目引用中添加PrivateAssets="all",确保生成器的输出不会被当作常规依赖处理,配置修改为:
<ProjectReference Include="$(RepoRoot)\MyGenerator\MyGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" PrivateAssets="all"/>
3. 手动部署生成器到分析器目录
将源生成器项目编译输出的MyGenerator.dll复制到应用类库项目的analyzers/dotnet/cs目录下(若目录不存在则创建)。这种方式能让Roslynator直接识别到生成器,同时保留项目引用以支持常规构建流程。
4. 升级Roslynator CLI版本
老版本的Roslynator对.NET Framework项目的源生成器支持存在兼容性问题,执行以下命令升级到最新稳定版:
dotnet tool update -g roslynator.dotnet.cli
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

