CLR查找和加载程序集的方式(二) 流程图
- 2019 年 10 月 4 日
- 筆記
在前一篇文章《CLR查找和加载程序集的方式(一)》中详细介绍了CLR查找和加载程序的方式,分别介绍了配置与代码的实现方式。
本篇通过一个具体的流程图来帮助大家更加直观明了深入的掌握CLR查找DLL程序集的方式。

说明:
(1) 初始化绑定:从元数据中取出相关的AssemblyRef记录,并查看其中包括什么内容–它的外部程序集名称,它是否经过强命名,是否指定了文化等。
(2) 应用版本策略:这是一些由应用程序、被引用的共享程序集发布者或管理员生成的语句。这些语句包含在XML配置文件中,并且只是将程序集的特定版本(或一组版本)重定向到不同的版本。
(3) codebase:该节点是一个特殊的设置,在配置文件中明确地指定某个程序集的查找路径,这个规则具有最高的优先级。
而且如果你做了设置,CLR就一定会按照你的设置去查找,如果找不到,它就报告失败,而不会继续查找其他路径。
需要注意的是,如果程序集是经过了强名称签名,则在定义codebase的时候,应该注明publicKeyToken。
关于probing与codeBase节点设置
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <runtime> 4 <!--双核以上计算机请开启下面的选项为 true--> 5 <gcServer enabled="false" /> 6 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 7 <dependentAssembly> 8 <probing privatePath="bin;bin2subbin;bin3"/> 9 <assemblyIdentity name="MyTestNetLibrary" 10 publicKeyToken="bf715e7d53keacd4" 11 culture="neutral" /> 12 <codeBase version="1.0.1.0" href="CodeBaseMyTestNetLibrary.dll" /> 13 </dependentAssembly> 14 </assemblyBinding> 15 </runtime> 16 </configuration>