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

使用Newtonsoft.Json序列化含自定义属性对象时触发FileNotFoundException

解决Newtonsoft.Json序列化时抛出FileNotFoundException的问题

嘿,这个问题我之前折腾过几次,大概率是.NET版本与Newtonsoft.Json的兼容问题,或是程序集绑定配置出了问题,给你几个靠谱的解决方向:

  • 检查Newtonsoft.Json与.NET框架版本的兼容性
    不同版本的Newtonsoft.Json对.NET框架版本有明确要求,比如较新的13.x及以上版本需要.NET Framework 4.6.1或更高版本支持。如果你的项目基于.NET Framework 4.6以下开发,就容易出现这类程序集找不到的问题。
    你可以通过NuGet包管理器调整:

    1. 右键项目 → 管理NuGet程序包
    2. 找到Newtonsoft.Json,要么升级项目的.NET Framework版本到4.6.1+,要么降级Newtonsoft.Json到适配你当前.NET版本的版本(比如12.x系列适配.NET Framework 4.5+)。
  • 添加程序集绑定重定向
    很多时候是因为项目里引用的System.Runtime版本和Newtonsoft.Json期望的版本不匹配,这时需要在app.config(桌面项目)或web.config(Web项目)里添加绑定重定向,统一版本:

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
          <!-- 把newVersion改成你项目中实际引用的System.Runtime版本号 -->
          <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.0.0.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    

    查看实际版本的方法:右键项目 → 引用 → 找到System.Runtime → 查看属性面板里的版本号即可。

  • 清理重建项目,修复引用
    有时候是项目缓存导致的假问题:

    1. 右键项目 → 清理
    2. 手动删除项目目录下的bin和obj文件夹
    3. 重新生成项目
      另外检查引用列表里的System.Runtime是否有黄色感叹号,如果有,右键选择“修复”或者通过NuGet重新安装对应的包。
  • 验证自定义属性的影响
    你可以先暂时去掉类和属性上的[CSVTable]、[CSVColumn]特性,测试JsonConvert.SerializeObject是否能正常运行。如果去掉后正常,那还是回到前面的版本兼容问题——Newtonsoft.Json在反射处理自定义属性时,对依赖的程序集版本要求更严格了。

内容的提问来源于stack exchange,提问作者ZoyuJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:52:26