.NET Framework 中程序集绑定与配置详解
1. 已加载程序集与全局程序集缓存查找
在程序集绑定过程的第二步,公共语言运行时(CLR)会检查特定程序集是否在之前的调用中被请求过。若已请求过,CLR 会将调用重定向到已加载的程序集,绑定过程就此结束。
CLR 通过程序集的强名称来判断其是否已存在于内存中。即便应用程序未曾请求该程序集,但同一进程中的其他程序集有请求,也会出现这种情况。此时,被请求的程序集可在多个客户端之间安全共享。强名称是程序集名称、版本、区域性、发布者公钥和处理器体系结构的组合,程序集的标识并非基于文件名,因此切勿为不同文件赋予相同标识。
若程序集尚未加载,绑定过程会在全局程序集缓存(GAC)中查找具有该标识的程序集。此步骤仅适用于具有强名称的程序集,因为私有程序集无法存储在 GAC 中。运行时首先会查找包含特定于平台程序集的 GAC 文件夹,如 32 位计算机上的 GAC_32 文件夹。若查找失败,会接着探索包含以中间语言(IL)代码编译的程序集的 GAC_MSIL 文件夹。若在 GAC 中找到程序集,绑定过程将中断。
2. 代码基指示符
当知晓程序集版本且确定其不在 GAC 中时,运行时需定位程序集文件,此时会利用检测过程(后续章节会详细描述)。开发人员、组件发布者或系统管理员可通过在三个配置文件之一中添加代码基指示符来禁用检测。代码基指示符是 <dependentAssembly> 节中显示的 <codeBase> 标记。
代码基指示符在基于浏览器和 ClickOnce 的场景中尤为有用且常见,用于向
.NET程序集绑定与配置解析
超级会员免费看
订阅专栏 解锁全文
105

被折叠的 条评论
为什么被折叠?



