根据此处的 MSDN 文档 - 程序集的标识包括以下内容:简单名称、版本号、加密密钥对和支持的区域性。
但是,在将程序集添加到 GAC 时,ProcessorArchitecture 也用于唯一标识程序集。.NET 框架是否将 ProcessorArchitecture 视为程序集标识的一部分?
根据此处的 MSDN 文档 - 程序集的标识包括以下内容:简单名称、版本号、加密密钥对和支持的区域性。
但是,在将程序集添加到 GAC 时,ProcessorArchitecture 也用于唯一标识程序集。.NET 框架是否将 ProcessorArchitecture 视为程序集标识的一部分?
当您为程序集设置特定于版本的引用时,该引用包括体系结构:
<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 进程中的限制,反之亦然)。