相关疑难解决方法(0)

无法加载文件或程序集'Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'

我收到了错误

System.IO.FileLoadException:无法加载文件或程序集"Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

我的CI构建

我试过的解决方案

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

它也没用

asp.net json.net

224
推荐指数
17
解决办法
34万
查看次数

再现Newtonsoft.Json程序集版本冲突

我已经着手在Newtonsoft.Json中重复出现汇编版本冲突(与我之前的问题有关为什么Newtonsoft.Json如此容易出现汇编版本冲突?)以便更好地理解它,但我无法触发它.

从最顶层的答案来看,如果我的项目A引用了一个版本的Json.NET,那么它应该会发生,然后它引用一个项目B,它本身引用了一个不同的版本(并且它们没有用于处理问题的程序集重定向).

我已经使用类库项目和命令行项目制作了一个解决方案,这两个项目都引用了我用Nuget Package Manager为两个项目安装的Newtonsoft.Json,然后我编辑了类库packages.config以使用旧版本:

<package id="Newtonsoft.Json" version="6.0.1" targetFramework="net452" />
Run Code Online (Sandbox Code Playgroud)

命令行项目引用最新版本:

<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net452" />
Run Code Online (Sandbox Code Playgroud)

这不会触发问题,但是,项目仍然成功构建并执行(我只是序列化一个字符串并从两个项目中打印它,我从EXE调用DLL以确保它尝试加载两个版本的Newtonsoft.Json.

如果需要,我已经在https://github.com/sashoalm/ReproduceNewtonsoftJsonBug上传了测试项目.

为什么不会触发错误?

c# json.net

5
推荐指数
1
解决办法
1484
查看次数

标签 统计

json.net ×2

asp.net ×1

c# ×1