国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

CLR如何加載程序集以及程序集版本策略

2019-11-17 02:41:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

CLR如何加載程序集以及程序集版本策略

在項(xiàng)目的配置文件Web.config中,會(huì)看到<runtime>節(jié)點(diǎn),以及包含在其中的<assemblyBinding>節(jié)點(diǎn),這顯然與程序集有關(guān),這些節(jié)點(diǎn)到底何時(shí)被用到呢?

在默認(rèn)情況下,在運(yùn)行時(shí),JIT編譯器將IL代碼編譯成本地代碼時(shí),會(huì)查看IL代碼中的字段、局部變量、方法參數(shù)等引用了哪些類(lèi)型,然后借助程序集的TypeRef和AssemblyRef元數(shù)據(jù),內(nèi)部使用System.Reflection.Assembly的Load方法來(lái)確定需要被加載的程序集,包括module。

Load方法接收一個(gè)代表強(qiáng)類(lèi)型名稱(chēng)程序集的字符串,類(lèi)似如下:

Assembly a = Assembly.Load(
    "somename, Version=1.2.3.4" +
    "Culture=neutral, PublicKeyToken=........"
);
a.CreateInstance("someclassname");

在Load方法內(nèi)部,會(huì)使用一個(gè)叫做"程序集解析(assembly resolver)"的機(jī)制尋找程序集。首先會(huì)遵循"版本策略"去尋找程序集合適的版本。這個(gè)"版本策略"可以在配置文件中配置。在"C:/Windows/Microsoft.NET/Framework/v4.0.30319/Config/machine.config"中完成計(jì)算機(jī)級(jí)別的配置,在當(dāng)前項(xiàng)目的Web.config中完成應(yīng)用程序級(jí)別的配置。例如在Web.config中:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

如果想取消"版本策略",可以在Web.config中按如下配置:

<runtime>
    <rt:assemblyBinding>
      <rt:publisherPolicy apply="no" />
<PRe style="font-size: 11px; font-
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 萨嘎县| 建水县| 金寨县| 光山县| 枣强县| 亚东县| 黑河市| 昭平县| 衢州市| 贵州省| 东城区| 桐乡市| 庆元县| 溧阳市| 兴化市| 漳浦县| 连云港市| 嫩江县| 仁化县| 南阳市| 吉木萨尔县| 桐乡市| 奉贤区| 赤城县| 卓尼县| 新乡市| 轮台县| 古田县| 左云县| 桐庐县| 安岳县| 黄龙县| 肥东县| 伊通| 察哈| 广德县| 山东| 田林县| 南京市| 澄江县| 济源市|