关于Assembly的动态加载

Assembly的加载通常是由CLR隐式进行的,CLR的原则是只有用到时才加载,也就是说很多时候在应用程序运行过程中还要进行加载Assembly的动作,如果希望显式的在可预期的时候动态加载Assembly, 可以采用以下方法:

Assembly的动态加载有两种主要形式,都是使用Assembly类的静态方法:

* Assembly.LoadFrom(FilePath|URI): 直接指定Assembly的文件路径或URI,调用Assembly Loader;

* Assembly.Load(FullQualifiedAssemblyName):需要输入Assembly的全名称(包括name, version, culture, public key token),该种加载调用Assembly resolver,并基于以下策略来定位相应的Assembly:
   1. Assembly是否有public key,如果没有直接到Probing (step 5),如果有则应用version policy
   2. 基于version policy,也就是.config文件种的assemblyBinding元素下assembly定位的信息;
   3. 如果无法通过version policy定位,则在GAC种查找;
   4. 如果无法在GAC中定位assembly,codeBase来定位,如果通过codeBase找到的文件不匹配,则失败;
   5. 如果无法通过codeBase定位,则通过probing方式来查找,如果找到的文件不匹配,则失败。
   6. 在第一步之前应该还可以在DEVPATH系统变量中查找,但一般这只是给开发者用的而不是在部署时用的,所以可以忽略不计。

以上两种方式表面上类似,但一个是调用Loader,一个调用Resolver,实际差别很大。

转载于:https://www.cnblogs.com/bbpnb/archive/2004/06/07/14008.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值