利用不同的依赖项,取决于C#中的实例化类

时间:2014-08-07 19:00:44

标签: c# .net dll

情况如下:

  1. 我有2个不同公司(dll)提供的2个SDK库
  2. 两者都使用相同的第三方dll作为这些SDK的依赖项
  3. 各公司使用的dll版本不同
  4. 我的代码需要实例化其中一个dll,具体取决于用户输入。永远不需要在同一次运行中实例化两者。
  5. 无法要求公司使用相同版本的第三方dll。
  6. 现在,我正在删除依赖项并在不同时间编译代码2。并强制用户在安装时选择使用哪一个。

    我想检查是否可能:

    1. (最好)动态加载对运行时的依赖 - 取决于实例化的类。 或者如果不可能:
    2. 包含一个编译时指令来选择de correct dependencies
    3. 请注意,有问题的dll是第1级依赖关系所需的第2级依赖关系。所以我可能需要动态加载(我猜)

1 个答案:

答案 0 :(得分:0)

如果共享的第三方dll是强签名的,并且更高版本与之前的版本兼容,则可以使用.config文件中的assembly redirect policy来始终使用最新版本。

即。适用于Json.Net库(强烈签名,以后的版本可以使用,而不是之前的版本)

文章中的样本:

 <dependentAssembly>
    <assemblyIdentity name="someAssembly" publicKeyToken="32ab4ba45e0a69a1"/>
    <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" />
  </dependentAssembly>