1.1 KiB
1.1 KiB
Source Generator 调试指南
当前状态
生成器已编译成功,但没有生成任何代码文件。
可能的原因
- 类型匹配问题:生成器的
IsSystemClass或GetSystemType方法无法正确识别 System 类 - Incremental Generator Pipeline 问题:Pipeline 可能过滤掉了所有候选类
- 命名空间不匹配:生成器可能在寻找错误的命名空间
调试步骤
方法 1:简化生成器逻辑
将 IsSystemClass 改为返回 true 以查看是否有任何类被处理:
private static bool IsSystemClass(SyntaxNode node)
{
return node is ClassDeclarationSyntax; // 处理所有类
}
方法 2:查看生成器输出
# 启用详细日志
dotnet build /p:EmitCompilerGeneratedFiles=true /p:CompilerGeneratedFilesOutputPath=Generated
# 查看生成的文件
ls -la Generated/
方法 3:使用 LinqPad/RoslynPad 测试
创建独立的测试项目来验证 Roslyn API 调用。
下一步
建议先尝试方法 2,查看 MSBuild 是否能输出生成的文件。