【问题标题】:Utilizing different dependencies, depending on instantiated class in C#根据 C# 中的实例化类使用不同的依赖项
【发布时间】:2014-08-07 19:00:43
【问题描述】:

情况如下:

  1. 我有 2 个由 2 个不同公司 (dll) 提供的 SDK 库
  2. 两者都使用相同的第三方 dll 作为这些 SDK 的依赖项
  3. 每个公司使用的dll版本不同
  4. 我的代码需要根据用户输入实例化其中一个 dll。永远不需要在同一运行中实例化两者。
  5. 没有办法要求公司使用相同版本的第三方dll。

现在,我正在删除依赖项并编译代码 2 次。并强制用户在安装时选择使用哪一个。

我想检查一下是否可以:

  1. (最好)动态加载对运行时的依赖 - 取决于实例化的类。 或者如果不可能:
  2. 包含一个编译时指令以选择正确的依赖项

请注意,有问题的 dll 是一级依赖项所需的二级依赖项。所以我可能需要动态加载两者(我猜)

【问题讨论】:

    标签: c# .net dll


    【解决方案1】:

    如果共享的第三方 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 2017-11-11
      • 2018-01-15
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多