You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

增量源生成器依赖System.Text.Json报错,求解决方法

问题解决:源生成器依赖System.Text.Json时的程序集缺失错误

问题描述

我的源生成器依赖System.Text.Json,但编译时出现报错:

生成器‘Generator’生成源失败,将无法参与输出,可能导致编译错误。异常类型为TypeInitializationException,消息为‘System.Text.Json.JsonSerializer的类型初始值设定项引发异常’,嵌套异常为System.IO.FileNotFoundException:无法加载文件或程序集‘System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51’,系统找不到指定文件。

项目为OpenAPIGenerator。

解决方法

  • 安装对应版本的缺失NuGet包
    System.Text.Json在.NET 8中依赖System.Text.Encodings.Web,直接在项目中安装8.0.0版本的包:

    dotnet add package System.Text.Encodings.Web --version 8.0.0
    

    也可以手动在项目文件(.csproj)中添加引用:

    <PackageReference Include="System.Text.Encodings.Web" Version="8.0.0" />
    
  • 检查.NET版本兼容性
    确保源生成器项目和目标项目都使用.NET 8(报错要求的是8.0.0.0版本程序集)。如果项目用的是更低版本.NET,要么升级到.NET 8,要么安装对应版本的System.Text.Encodings.Web包(比如.NET 7对应7.0.x版本)。

  • 清理重建项目
    缓存异常可能导致依赖加载失败,执行以下命令清理并重建:

    dotnet clean
    dotnet restore
    dotnet build
    
  • 调整源生成器的依赖引用配置
    对于源生成器项目,要确保依赖包是直接引用,可在项目文件中设置PrivateAssets属性,避免依赖传递到引用生成器的项目:

    <PackageReference Include="System.Text.Json" Version="8.0.0" />
    <PackageReference Include="System.Text.Encodings.Web" Version="8.0.0" PrivateAssets="all" />
    
  • 重置NuGet缓存
    如果NuGet缓存损坏,执行以下命令清除缓存后重新还原:

    dotnet nuget locals all --clear
    dotnet restore
    

内容的提问来源于stack exchange,提问作者Jan Tamis Kossen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:32:08