【发布时间】:2008-09-20 05:19:01
【问题描述】:
要完成一些测试,即使我运行的是 32 位版本的 Windows,我也需要加载 64 位版本的程序集。这可能吗?
【问题讨论】:
标签: c# .net assemblies 64-bit
要完成一些测试,即使我运行的是 32 位版本的 Windows,我也需要加载 64 位版本的程序集。这可能吗?
【问题讨论】:
标签: c# .net assemblies 64-bit
我不确定你为什么要这样做,但我想你可以。如果您不做任何事情来告诉它,CLR 将加载特定于您正在使用的 CPU 的程序集版本。这通常是你想要的。但是我有一次需要加载程序集的中性 IL 版本。我使用Load method 来指定版本。我还没有尝试过(这里的其他人建议它不适用于可执行程序集),但我想您可以执行相同的操作来指定要加载 64 位版本。 (您必须指定是否需要 AMD64 或 IA64 版本。)
【讨论】:
来自 CLR 通过 C# (Jeff Richter):
"如果您的程序集文件只包含类型安全的托管代码, 您正在编写的代码应该适用于 32 位和 64 位版本的 Windows。不 您的代码需要更改源代码才能在任一版本的 Windows 上运行。
事实上, 编译器生成的 EXE/DLL 文件将在 32 位 Windows 以及 64 位 Windows 的 x64 和 IA64 版本!换句话说,一个文件将在任何 安装了 .NET Framework 版本的计算机。”
" C# 编译器提供了 /platform 命令行开关。此开关允许您指定 生成的程序集是否可以在运行 32 位 Windows 版本的 x86 机器上运行 仅,仅运行 64 位 Windows 的 x64 机器,或运行 64 位的 Intel Itanium 机器 仅限窗户。如果不指定平台,则默认为anycpu,表示 生成的程序集可以在任何版本的 Windows 上运行。
【讨论】:
32 位 Windows 无法在没有 VM/emutalor 的情况下运行 64 位可执行文件
32 位 Windows 可以编译以在 64 位 Windows 上执行
【讨论】:
不,您不能在运行 32 位版本的 Windows 的系统上运行为 64 位编译的程序集。
【讨论】: