How does CLR locate assembly

1. 察看配置文件,配置文件共有3处:
a. app.config :
b. publisher policy file:
c. machine.config:
第一步结束,我们已经根据Calling AssemblyManifest中的Referenced Assembly 和配置文件中得到了一个Full Qualified Assembly Name

2. 根据第一步得到的FQAN查找当前的binding context中是否已load了这个assembly
3. 如果FQAN中指定了 Public key token那么查找GAC
4. 如果GAC中没有或者FQAN中没有指定public key token,根据以下规则查找
   a. 如果app.config中指定了CodeBase那么,直接在CodeBase下查找该Assembly,找不到则直接绑定失败
   b. 如果 FQAN中指定了Culture,且Culture不为Neutual, 查找
      [Application Base]\[Culture]\[AssemblyName].dll
      [Application Base]\[Culture]\[AssemblyName]\[AssemblyName].dll
      [Application Base]\[Culture]\[AssemblyName].exe
      [Application Base]\[Culture]\[AssemblyName]\[AssemblyName].exe
   c. 如果FQAN中没有指定Culture或Culture为Neutual ,那么查找
      [Application Base]\[AssemblyName].dll
      [Application Base]\[AssemblyName]\[AssemblyName].dll
      [Application Base]\[AssemblyName].exe
      [Application Base]\[AssemblyName]\[AssemblyName].exe
   d. 如果app.config中或通过AppendPrivateBinPath方法指定了Private bin path,依次查找PrivateBin path, 先查找用AppendPrivateBinPath方法指定的路径。
   e. 如果使用Assembly.LoadFrom方法或在COM Interop中创建一个.NET开发的COM组件中,查找
      [Calling Assembly CodeBase]\[AssemblyName].dll
      [Calling Assembly CodeBase]\[AssemblyName]\[AssemblyName].dll
      [Calling Assembly CodeBase]\[AssemblyName].exe
      [Calling Assembly CodeBase]\[AssemblyName]\[AssemblyName].exe
    f. 调用Windows Installer的方法请求某个assembly, 实现Install on demand

转载于:https://www.cnblogs.com/jonnyyu/archive/2004/06/23/18160.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值