我们已经有了带有Newtonsoft.Json版本8.0.3的部署服务器。
我构建了一个成为服务的应用程序(ConsoleApp)。 在我的ConsoleApp中,我引用了Newtonsoft.Json版本11.0.0。
我的应用引用了其他项目,这些项目也使用Newtonsoft.Json的不同版本。
部署应用程序时,我们仅将exe和配置复制到部署服务器。 如何确保我们的应用不会因为Newtonsoft.Json版本不兼容而失败?
我试图设置运行时部分以支持assemblyBinding:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.4.1.0" newVersion="3.4.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Common.Logging.Core" publicKeyToken="af08829b84f0328e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.4.1.0" newVersion="3.4.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
要使我的代码正常工作,我需要在本节中进行哪些更改?
注意:服务器上已经有Newtonsoft.Json 8.0.3。我们不能覆盖它,因为它是另一产品安装的一部分。
我的ConsoleApp引用了其他使用Newtonsoft.Json 7.0.1、10.0.5和11.0.0的项目。 当我构建exe和配置并将其复制到部署文件夹时,该应用程序会抱怨:
无法加载文件或程序集'Newtonsoft.Json,版本= 8.0.0.0, 文化=中性,PublicKeyToken = 30ad4fe6b2a6aeed”或其中之一 依赖性。找到的程序集的清单定义不 匹配程序集参考。 (来自HRESULT的异常:0x80131040)
还请注意,如果我在Visual Studio中更改bindingRedirect属性并进行编译,它将把它设置回原来的状态。
解决此问题的最佳方法是什么?
谢谢。