Windows控制台OpenAPI应用中Newtonsoft.Json引发文件未找到异常的原因?
解决Newtonsoft.Json版本不匹配导致的FileNotFoundException问题
针对你遇到的Windows控制台OpenAPI应用附加进程时抛出System.IO.FileNotFoundException(找不到Newtonsoft.Json 13.0.0.0,但已安装13.0.3.0)的问题,可通过以下方式解决:
1. 添加程序集绑定重定向
通过配置让CLR自动将对旧版本的请求映射到已安装的新版本。在控制台应用的App.config文件中添加以下配置:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-13.0.3.0" newVersion="13.0.3.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
该配置会将所有对0.0.0.0至13.0.3.0版本的Newtonsoft.Json请求,重定向到你当前安装的13.0.3.0版本。
2. 安装指定版本的Newtonsoft.Json
如果不需要兼容新版本,可直接安装13.0.0.0版本的NuGet包:
- 在NuGet包管理器控制台执行命令:
Install-Package Newtonsoft.Json -Version 13.0.0 - 或在Visual Studio的NuGet包管理器界面中搜索Newtonsoft.Json,选择版本13.0.0进行安装。
3. 确认依赖文件已复制到输出目录
检查应用输出目录(默认路径如bin\Debug\netX或bin\Release\netX),确认Newtonsoft.Json.dll文件存在。若不存在:
- 在项目引用列表中找到Newtonsoft.Json
- 右键选择“属性”,将“复制本地”设置为
True
关于Azure App Service无问题的说明
Azure App Service中的ASP.NET应用默认会自动处理程序集绑定重定向,且部署过程中NuGet依赖会被正确复制到部署目录,加上云端运行时环境对版本兼容性的处理更宽松,因此不会出现该异常。
内容的提问来源于stack exchange,提问作者Marc George
相关产品推荐
相关产品推荐

