Skip to content

FAQ 分册 4:测试、调试与驱动结果

Q15:如何调试源生成器?

  • 症状:已经知道大概哪一步出问题,但需要更系统的排查顺序
  • 可能原因:每次都从头乱试,没有固定调试路径
  • 解决方案:固定顺序:先看输入类,再看中间模型,再看 .g.cs,最后跑测试
  • 相关章节:第 12 章
  • 相关术语:SourceProductionContextGeneratorDriverWithTrackingName(...)

Q16:如何测试源生成器?

Q18:CompilationCSharpCompilation 到底是什么关系?

  • 症状:测试里创建时用 CSharpCompilation.Create(...),但返回类型写成 Compilation
  • 可能原因:把“抽象编译对象”和“C# 具体实现”混成一个概念了
  • 解决方案:先记最短区别:Compilation 是通用抽象;CSharpCompilation 是 C# 的具体实现。测试辅助方法返回前者,是因为后续主要用它的通用能力
  • 相关章节:第 12 章
  • 相关术语:CompilationCSharpCompilation.Create(...)

Q19:怎么知道“到底生成了哪些文件”,以及“是谁生成的”?

  • 症状:已经能从 outputCompilation.SyntaxTrees 看到生成树,但还想知道每个生成器各自产出了什么
  • 可能原因:只看了 Compilation,还没有看驱动运行结果
  • 解决方案:运行后调用 driver.GetRunResult()。总结果看 GeneratedTreesDiagnostics,单个生成器看 Results
  • 相关章节:第 12 章
  • 相关术语:GeneratorDriverGetRunResult()GeneratorDriverRunResultGeneratorRunResult

Q20:我已经加了 WithTrackingName(...),为什么还是看不到步骤跟踪结果?

下一步去哪里

基于当前仓库文档副本构建的 VitePress 站点