我正在创建一个简单的 Roslyn 源代码生成器。在调试时,生成器似乎运行良好,并能正确生成所需的类。然而,在解决方案的另一个项目中引用它时,会显示一个红色图标,提示为“已忽略”,并且没有任何输出产生:
生成器代码非常简单:
我检查了以下内容:
namespace CompetencesSourceGenerator
{
using Microsoft.CodeAnalysis;
[Generator]
public class CompetenceNamesGenerator: CompetenceGeneratorBase
{
public override void Execute(GeneratorExecutionContext context)
{
context.AddSource(
"CompetenceNames.g.cs",
@"namespace Foo { public class Bar { } }"
);
}
}
}
我检查了以下内容:
- 生成器项目的目标是.NET Standard 2.0
- 引用项目的目标是.NET 6
- 生成器项目中的
Microsoft.CodeAnalysis.CSharp
和Microsoft.CodeAnalysis.Analyzers
都是最新的 - VS已经更新到最新版本(17.4.4)
- .NET编译器平台SDK已安装
<ProjectReference Include="..\relativepathhere\CompetencesSourceGenerator.csproj" PrivateAssets="all" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
这样的代码可能有效。请特别关注那些额外的属性。 - Marc Gravell.g.cs
文件没有更新,您实际上也无法看到当前可编译的源代码。这是已知的问题吗? - Impworks