同一个项目的同一DLL多版本的兼容问题

本文介绍了在使用Swagger时遇到的DLL版本不匹配问题及解决方案。通过配置bindingRedirect实现高版本兼容低版本,并展示了如何配置以支持不同版本的DLL共存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在做REST接口时,想要引入swagger,引入了最新的Swashbuckle.Net45-5.2.1版本,可是这个版本关联两个DLL(System.Web.Http、System.Net.Http.Formatting)都是5.2.2.0版本,而我使用的是基于framework4.5的5.2.6版本,所以一直报错:

未能加载文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一个依赖项。系统找不到指定的文件 

考虑到DLL的版本问题,做了高版本兼容低版本的配置:

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.6.0"/>
      </dependentAssembly>

      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.6.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

还有一种情况,确实需要两个DLL并存,此时需要配置如下:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
        <codeBase version="3.5.0.0" href="Modules\RichTextEditor\v3.5\Newtonsoft.Json.dll" />
        <codeBase version="6.0.0.0" href="Modules\RichTextEditor\net\Bin\Newtonsoft.Json.dll" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

 

转载于:https://www.cnblogs.com/MollyHan/p/9202911.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值