【问题标题】:Common practice to load the dependency(different version of dll) in program在程序中加载依赖项(不同版本的dll)的常见做法
【发布时间】:2020-05-18 22:56:32
【问题描述】:

假设有一个使用 2 个第三方 dll 的代码。一个是NLog.Extensions.Logging 版本1.6.1 用于记录另一个是CryptoProvider.dll 用.net 标准2.0 编写。 NLog.Extensions.Logging 内部使用Microsoft.Extensions.Logging 版本2.1.0CryptoProvider.dll 内部使用Microsoft.Extensions.Logging 版本2.0.0。所以现在有一个关于版本不匹配的问题。那么我应该如何设计 CryptoProvider dll。以便解决问题。

【问题讨论】:

    标签: c# logging .net-core dependencies .net-standard


    【解决方案1】:

    可以使用app.config 文件assemblyBinding\bindingRedirect 重定向程序集绑定,如下所示

          <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
          </dependentAssembly>
    

    这可以将所有要解析的程序集 Newtonsoft.Json 版本引用重定向到 12.0.0.0。 如果安装的包具有不同的依赖版本,VS 通常会自动添加这些重定向。

    但它只有在重定向版本之间没有重大更改时才有效。

    不确定它是否可以在 .net framewok 和 .net core 程序集之间混合使用。

    Assembly binding redirect for .net core 可以使用deps.json 完成

    【讨论】:

    • bindingRedirect 仅适用于 .net 框架。如果我没记错的话。
    • @vikky 添加了 .net 核心程序集绑定重定向的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多