Assembly.Load处理器体系结构规则

时间:2012-05-08 08:37:23

标签: c# reflection

加载程序集时,应该使用assembly.FullName而不是assembly.Name,以避免冲突,具有以下格式:

“SampleAssembly,Version = 1.0.2004.0,Culture = neutral,PublicKeyToken = 8744b20f8da049e3”

从MSDN文档中,此字符串还可以包含“ProcessorArchitecture = ????”哪里????可以是MSIL,X86等,但是可选。

如果未在assemblyName字符串中定义ProcessorArchitecture属性,则Assembly.Load使用什么规则来查询GAC以加载为多个处理器体系结构(x86,Amd64,MSIL)编译的程序集?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这是隐含的。当Assembly.Load()语句运行时,加载程序Shim已经确定进程是以32位还是64位模式运行。因此,当它决定64位模式时,只有一个针对msil或amd64的程序集才能工作。

GAC分为3部分,子目录名称为GAC_MSIL,GAC_32和GAC_64。融合加载器将首先在GAC_MSIL中查看是否可以找到匹配的程序集。然后查看另外两个中的一个以进行匹配。没有歧义。