我面临着以下问题(或者挑战,如果人们更喜欢这样称呼它):在我们的C#桌面应用程序中,我们有两个额外的数据处理库供应商(两者都是使用MATLAB开发的,尽管版本不同)。每个库都依赖于MathWorks的MWArray.dll,每个都需要一个不同的版本。
我确定(经过测试)的确是:
我已经尝试过的:
在SO中寻找类似的问题-它们要么解决一级依赖关系的歧义性(而我的问题将是二级依赖关系的歧义性),要么解决(向后)兼容或开放源代码库的问题,因此那些不能解决我的问题:
使用程序集运行时绑定-我的App.config文件丰富了:
<runtime>
<assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentassembly>
<assemblyidentity name="MWArray" publickeytoken="e1d84a0da19db86f" />
<bindingredirect oldVersion="0.0.0.0-2.17.0.0" newVersion="2.17.0.0" />
<codebase version="2.17.0.0" href="C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MWArray\v4.0_2.17.0.0__e1d84a0da19db86f\MWArray.dll" />
<codebase version="2.18.0.0" href="C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MWArray\v4.0_2.18.0.0__e1d84a0da19db86f\MWArray.dll" />
</dependentassembly>
</assemblybinding>
</runtime>
再次-到达MWArray的不是我的代码,而是供应商的代码。
答案 0 :(得分:0)
您是否尝试过依赖关系重定向?这是来自Web|App.config
的代码:
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.1" newVersion="4.0.3.1" />
</dependentAssembly>