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