1

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

“SampleAssembly,版本=1.0.2004.0,文化=中性,PublicKeyToken=8744b20f8da049e3”

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

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

预先感谢您的帮助。

4

1 回答 1

1

它是隐含的。到您的 Assembly.Load() 语句运行时,加载程序 shim 已经决定进程是在 32 位还是 64 位模式下运行。因此,例如,当它决定使用 64 位模式时,只有以 msil 或 amd64 为目标的程序集才能工作。

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

于 2012-05-08T09:03:59.563 回答