C#如何引用依赖版本的不同版本

时间:2019-05-20 13:54:22

标签: c# dependency-management

我面临着以下问题(或者挑战,如果人们更喜欢这样称呼它):在我们的C#桌面应用程序中,我们有两个额外的数据处理库供应商(两者都是使用MATLAB开发的,尽管版本不同)。每个库都依赖于MathWorks的MWArray.dll,每个都需要一个不同的版本。

让我告诉您情况的概况: enter image description here

我确定(经过测试)的确是:

  • 两个库都可以被单独调用
  • 两个版本的MRC(Matlab运行时编译器)可以共存并且不会造成干扰问题(请参见上文)
  • 针对较早版本的MWArray.dll编译的库不能与较新版本一起使用

我已经尝试过的:

    <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.dll放在“ 资源”路径中(一个名为 MWArray.2.17.0.0.dll ,另一个是 MWArray。 2.18.0.0.dll ),将两者都添加为参考,并相应地编辑了 App.config 。现在Library1崩溃,抱怨它无法初始化MWArray。这是合乎逻辑的,因为因为只有一些 MWArray.x.x.x.x.dll 可用,所以无法找到 MWArray.dll


对于处理此问题的任何提示或技巧,我将不胜感激,一个可行的解决方案当然是最好的。

再次-到达MWArray的不是我的代码,而是供应商的代码

1 个答案:

答案 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>