.NET 程序集架构、部署与保护机制解析
1. 程序集的处理器架构
程序集的处理器架构决定了它能在何种类型的处理器上运行。常见的处理器架构值包括:
-msil:表示程序集包含纯托管代码,不依赖特定架构。
-x86:经典的 32 位 Intel 架构。
-amd64:x86 架构的 64 位扩展,尽管名称中有 AMD,但也涵盖了 Intel 的 64 位扩展。CLR 称其为amd64而非更常用的x64,是因为 AMD 率先发明了这些扩展,Intel 随后跟进。
-ia64:Itanium 架构。
-arm:常见于 Windows Phone 和部分平板电脑的 ARM 架构。
混合程序集(包含托管和非托管代码的程序集,如 C++ 编译器生成的程序集)通常会针对特定架构。此外,使用互操作性服务可能意味着一个不依赖 CPU 代码的程序集也只能在特定架构上工作。
在调用Assembly.Load时,可以指定处理器架构,示例代码如下:
var asm = Assembly.Load("ResourceExample, Version=1.2.0.0, Culture=neutral, " + "PublicKeyToken=null, ProcessorArchitecture=amd6