反射(4)绑定程序集配置策略
<runtime> 的 <assemblyBinding> 元素
Xmlns特性,指定程序集绑定所需的 XML 命名空间。使用字符串“urn:schemas-microsoft-com:asm.v1”作为值。
<assemblyBinding>子元素如下:
1. <dependentAssembly> 元素
封装每个程序集的绑定策略和程序集位置。为每个程序集使用一个 dependentAssembly 元素。
a) <assemblyIdentity> 元素
b) <bindingRedirect> 元素 将一个程序集版本重定向到另一个版本。
c) <codeBase> 元素
确定要使用的程序集版本后,运行时应用确定版本的基本代码设置查找程序集。(可以有多个<codeBase>元素,用于对应不同程序集版本)
计算机配置文件或发布者策略文件中使用 <codeBase> 设置,该文件还必须重定向程序集版本。应用程序配置文件可在不重定向程序集版本的情况下拥有基本代码设置(即可不使用< bindingRedirect >元素)。
如果程序集具有强名称,则基本代码设置可以是本地 Intranet 或 Internet 上的任何地方。如果程序集为私有程序集,则基本代码设置必须是相对于应用程序目录的路径。
注意:在使用<codeBase>,需要提供版本,公钥等长名称程序集标识信息,所以使用部分名称加载程序集不会使用配置策略。
2. <probing> 元素
指定加载程序集时公共语言运行时要搜索的根位置下用户的子目录列表(必须是应用程序根目录的子目录),多个子目录可用分号隔开。
可以使用应用程序域的 AppendPrivatePath 属性,在应用程序配置文件和托管代码中指定此位置。当在托管代码中指定时,先探测托管代码 privatePath,随后探测应用程序配置文件中指定的路径。
3. <publisherPolicy> 元素
指定运行时是否采用发行者策略配置信息。
4. <qualifyAssembly> 元素
配置当动态加载程序集使用程序集的部分名称时应映射到的程序集全名 (名称、版本、区域性,如果适用还有公钥标记)。
要避免对部分程序集名称进行绑定,因为稳定性及兼容性不确定,如下:
a) 如果没有指定版本,则运行时会尝试用匹配其他指定条件的最高版本号定位程序集。
b) 如果没有指定区域性或公钥标记,则运行时对这两个特性的行为是未定义的。
----------注意:<publisherPolicy>与<codeBase> 应用区别
如果在一个目录中有一个程序集的多个版本,并且要引用该程序集的某个特定版本,则必须使用 <codeBase> 元素而不是 <probing> 元素的 privatePath 特性。如果使用 <probing> 元素,则运行时第一次找到与引用的简单程序集名称匹配的程序集时就会停止探测,而不论这是否是正确的匹配项。如果该程序集是正确的匹配项,则使用它。如果该程序集不是正确的匹配项,则停止探测,绑定失败。
《反射机制》系列:
参考资源:
作者:滴答的雨
出处:http://www.cnblogs.com/heyuquan/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
欢迎园友讨论下自己的见解,及向我推荐更好的资料。
本文如对您有帮助,还请多帮 【推荐】 下此文。
谢谢!!! (*^_^*)
技术群:(339322839广西IT技术交流),欢迎你的加入