如何加载程序集的特定版本

时间:2020-03-06 14:28:40  来源:igfitidea点击:

为了完成一些测试,即使我正在运行32位版本的Windows,我也需要加载程序集的64位版本。这可能吗?

解决方案

如果没有VM /仿真器,则32位Windows无法运行64位可执行文件

32位Windows可以编译以在64位Windows上执行

不可以,我们不能在运行32位版本的Windows的系统上运行针对64位编译的程序集。

从CLR通过C(Jeff Richter):

"如果程序集文件仅包含类型安全的托管代码,
我们正在编写适用于Windows 32位和64位版本的代码。不
我们必须对源代码进行更改,才能在任何Windows版本上运行代码。

实际上,
编译器生成的最终EXE / DLL文件将在32位Windows以及
x64和IA64版本的64位Windows!换句话说,一个文件将在任何文件上运行
安装了.NET Framework版本的计算机。"

" Ccompiler提供了一个/ platform命令行开关。该开关允许我们指定
生成的程序集是否可以在运行32位Windows版本的x86机器上运行
仅x64机器(仅运行64位Windows)或者Intel Itanium机器(运行64位)
仅Windows。如果我们未指定平台,则默认值为anycpu,这表示
生成的程序集可以在任何版本的Windows上运行。

我不确定我们为什么要这样做,但是我想我们可以。如果我们不采取任何其他措施,则CLR将加载特定于所使用CPU的程序集版本。通常就是我们想要的。但是我曾经有一个需要加载程序集的中性IL版本的场合。我使用Load方法指定版本。我还没有尝试过(其他人建议它不适用于可执行程序集),但是我想我们可以执行相同的操作来指定要加载64位版本。 (我们必须指定是否要使用AMD64或者IA64版本。)