zoukankan      html  css  js  c++  java
  • .NET:强签名程序集的加载问题 之 版本重定向

    背景

    多数解决方案会包含多个项目,某些支持插件架构的解决方案中,更是包含多个插件项目,这些项目会使用一些第三方NuGet Packages,如果管理不慎,解决方案中会出现多个版本的引用,这在编译期间不会引起问题,甚至开发调试期间也不会有问题,不过在发布过程会出现一些诡异的问题,如:未能加载xxx.dll等问题。本文简单的介绍一下解决思路。

    继续看之前可以先看看这篇文章:http://www.cnblogs.com/happyframework/p/3399975.html

    版本重定向

    强签名程序集的标识包含了版本号,.NET 在执行程序集探测之前,会先根据版本重定向配置解析出需要加载的版本号。

     1 <configuration>
     2    <runtime>
     3       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     4          <dependentAssembly>
     5             <assemblyIdentity name="myAssembly"
     6                               publicKeyToken="32ab4ba45e0a69a1"
     7                               culture="neutral" />
     8             <bindingRedirect oldVersion="1.0.0.0"
     9                              newVersion="2.0.0.0"/>
    10             <codeBase version="2.0.0.0"
    11                       href="http://www.litwareinc.com/myAssembly.dll"/>
    12          </dependentAssembly>
    13       </assemblyBinding>
    14    </runtime>
    15 </configuration>


    解析出版本号以后,剩下的就是经典的程序集探测过程了。需要说明的是:即使最终加载出重定向后的版本的程序集,程序也不见得能正常运行,因为:重定向后的程序集必须和编译时使用的程序集二进制兼容,所谓二进制兼容也容易理解,就是编译时使用的成员签名不能发生变化。

  • 相关阅读:
    计算器程序
    输入三个整数,输出最大数和最小数
    输入三个数a,b,c,要示按由小到大的顺序输出
    最短路
    luogu P3953 逛公园
    二分图匹配
    luogu P3231 消毒
    [bzoj2120] [洛谷P1903] 数颜色
    [bzoj2038] [洛谷P1494] [2009国家集训队] 小Z的袜子(hose)
    [洛谷P4012] [网络流24题] 深海机器人问题
  • 原文地址:https://www.cnblogs.com/happyframework/p/4098937.html
Copyright © 2011-2022 走看看