.NET 6的System.Text.Json源生成功能的生成代码存储位置在哪里
生成代码的默认位置
默认情况下System.Text.Json的源生成器输出的代码存放在项目的中间输出目录中,路径为:项目根目录/obj/[编译配置(Debug/Release)]/[目标框架标识]/
在该目录下查找文件名前缀为System.Text.Json.SourceGeneration、后缀为.g.cs的文件,就是源生成器输出的自动生成代码。
未生成代码的常见排查方案
- 首先确认项目目标框架为
.NET 6及以上版本,仅单独安装6.0.0版本的System.Text.Json包、但项目目标框架低于.NET 6时无法触发源生成逻辑。 - 确认你使用的.NET SDK版本为6.0.100及以上,可执行
dotnet --version命令查看当前SDK版本。 - 你可以在项目的
.csproj文件中添加以下配置,将生成的代码输出到项目根目录的Generated文件夹中方便查看:
<PropertyGroup> <!-- 开启输出生成代码到文件 --> <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles> <!-- 指定生成代码的输出目录 --> <CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath> </PropertyGroup>
- 确认你的
PersonJsonContext类所在的命名空间正确引用了Person类的命名空间,避免源生成器无法识别类型。
额外使用提示
你当前的序列化代码没有用到源生成的上下文,需要修改调用方式才能使用源生成逻辑:
// 旧调用:走默认反射序列化逻辑 // Console.WriteLine(JsonSerializer.Serialize(person)); // 新调用:使用源生成的上下文 Console.WriteLine(JsonSerializer.Serialize(person, PersonJsonContext.Default.Person));
内容的提问来源于stack exchange,提问作者Ombrelin
相关产品推荐
相关产品推荐

