【问题标题】:How to load a specific version of an assembly如何加载特定版本的程序集
【发布时间】:2008-09-20 05:19:01
【问题描述】:

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

【问题讨论】:

    标签: c# .net assemblies 64-bit


    【解决方案1】:

    我不确定你为什么要这样做,但我想你可以。如果您不做任何事情来告诉它,CLR 将加载特定于您正在使用的 CPU 的程序集版本。这通常是你想要的。但是我有一次需要加载程序集的中性 IL 版本。我使用Load method 来指定版本。我还没有尝试过(这里的其他人建议它不适用于可执行程序集),但我想您可以执行相同的操作来指定要加载 64 位版本。 (您必须指定是否需要 AMD64 或 IA64 版本。)

    【讨论】:

      【解决方案2】:

      来自 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 上运行。

      【讨论】:

        【解决方案3】:

        32 位 Windows 无法在没有 VM/emutalor 的情况下运行 64 位可执行文件

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

        【讨论】:

        • 我不认为 MS VPC 或 VMWare 允许您在 32 位主机上运行 64 位来宾 - 不确定其他主机。
        【解决方案4】:

        不,您不能在运行 32 位版本的 Windows 的系统上运行为 64 位编译的程序集。

        【讨论】:

        • 为什么会有人投反对票?在 32 位操作系统上执行 64 位程序集是不可能的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 2011-10-15
        相关资源
        最近更新 更多