我已经开始尝试在Newtonsoft.Json中持续复现程序集版本冲突(与我之前的问题相关:为什么Newtonsoft.Json容易发生程序集版本冲突?),以便更好地理解它,但我无法触发它。
根据那里的最佳答案,如果我有一个引用Json.NET一个版本的项目A,然后它引用一个引用不同版本的项目B(并且它们没有程序集重定向来处理此问题),那么就应该发生这种情况。
我创建了一个包含类库项目和命令行项目的解决方案,两者都引用了Newtonsoft.Json,我使用Nuget Package Manager为两个项目安装了它,然后我编辑了类库packages.config文件以使用旧版本。
这并不会引发问题,但项目仍然可以成功构建和执行(我只是将一个字符串序列化并从两个项目中打印它,然后从EXE调用DLL以确保它尝试加载Newtonsoft.Json的两个版本)。
如果需要的话,您可以在https://github.com/sashoalm/ReproduceNewtonsoftJsonBug上找到测试项目。
为什么问题没有被触发?
根据那里的最佳答案,如果我有一个引用Json.NET一个版本的项目A,然后它引用一个引用不同版本的项目B(并且它们没有程序集重定向来处理此问题),那么就应该发生这种情况。
我创建了一个包含类库项目和命令行项目的解决方案,两者都引用了Newtonsoft.Json,我使用Nuget Package Manager为两个项目安装了它,然后我编辑了类库packages.config文件以使用旧版本。
<package id="Newtonsoft.Json" version="6.0.1" targetFramework="net452" />
虽然命令行项目引用了最新的版本:
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net452" />
这并不会引发问题,但项目仍然可以成功构建和执行(我只是将一个字符串序列化并从两个项目中打印它,然后从EXE调用DLL以确保它尝试加载Newtonsoft.Json的两个版本)。
如果需要的话,您可以在https://github.com/sashoalm/ReproduceNewtonsoftJsonBug上找到测试项目。
为什么问题没有被触发?
Specific Version
是否设置为 True 或 False ?http://docs.telerik.com/teststudio/img/troubleshooting-guide/visual-studio-tg/missing-assembly-references/fig3.png - mjwills