How does CLR locate assembly

深藏阁楼爱情的钟 2021-12-16 12:23 285阅读 0赞
  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 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读

    相关 clr(clr a是什么指令)

    什么是CLR公共语言运行时 4、使用统一的数据类型和类库,所以编程语言的选择变得不重要了,而且易于团队开发。代码在CLR中的运行过程1、选择编译器首先CLR选择编译器,因

    相关 assembly

    《汇编语言》第二版,王爽著,汇编语言学习笔记。 一、           Introduction 汇编语言,assembly language,是一种用于电子计算机、微处