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

  在做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>

 

posted @ 2018-06-20 11:24  MollyHan  阅读(320)  评论(0编辑  收藏  举报