2

根据此处的 MSDN 文档 - 程序集的标识包括以下内容:简单名称、版本号、加密密钥对和支持的区域性。

但是,在将程序集添加到 GAC 时,ProcessorArchitecture 也用于唯一标识程序集。.NET 框架是否将 ProcessorArchitecture 视为程序集标识的一部分?

4

1 回答 1

1

当您为程序集设置特定于版本的引用时,该引用包括体系结构:

<Reference Include="SomeAssembly, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">

其中 x86 也可以是 MSIL (anyCPU)、x64 等。

但是,当尝试解析程序集时——运行时不会坚持定义的架构——它只会更喜欢它。也就是说,如果引用的是 x86 程序集,但当前的 DLL 文件是 AnyCPU - 运行时将使用找到的 DLL(当存在 x86 DLL 文件时,对 AnyCPU 程序集的引用也是如此)。

(我已经在私有部署的程序集上对此进行了测试,但我假设共享程序集的探测过程 - 即 GAC 的程序集 - 几乎相同)。(这当然不会违反不将 x86 程序集加载到 x64 进程中的限制,反之亦然)。

于 2012-10-13T20:49:56.413 回答