【问题标题】:.NET - NGEN compile x86 assembly.NET - NGEN 编译 x86 程序集
【发布时间】:2012-01-15 15:32:41
【问题描述】:

这是对这个问题的跟进:

NGEN x86 vs x64 with .NET executables

我知道 NGEN 可以使用自定义设置操作,但我使用 Inno Setup,所以我必须手动进行。

问题:如果我的程序集是在 x86 模式下编译的,我应该始终使用 x86 版本的 ngen.exe,还是取决于操作系统(x86 Windows 上的 x86 ngen.exe 和 x64 Windows 上的 x64 ngen.exe)?

问题是我在安装 NGEN 时遇到以下错误:

编译程序集 C:\Program Files\MyApp\MyApp.exe (CLR v4.0.30319) ... 2012 年 1 月 15 日 15:05:28 [2432]:1> 编译 C:\Program 时出错 Files\MyApp\MyApp.exe:此版本不兼容 您正在运行的 Windows 版本。检查您的计算机系统 查看您是否需要 x86(32 位)或 x64(64 位)的信息 程序的版本,然后联系软件发行商。 (HRESULT 异常:0x800700D8)

理想情况下,我想将主程序集 (x86) 及其所有依赖项(混合 x86 和 AnyCPU 构建)编译为本机代码。

请指教。

【问题讨论】:

    标签: .net compilation x86 64-bit ngen


    【解决方案1】:

    我在 IronScheme 上的 NSIS 也遇到过类似问题。

    1. 在安装程序中确定运行时 (x86/x64)
    2. 然后确定框架版本(2 或 4)。
    3. 根据上述 2,运行相应的 NGEN 可执行文件

    NSIS 脚本链接:https://github.com/leppie/IronScheme/blob/master/IronScheme/ironscheme.nsi

    【讨论】:

      【解决方案2】:

      当我尝试在 AnyCPU 模式下用 NGEN 编译 MyApp.exe 时遇到了同样的问题。 . . 然后我切换了 x64 模式,它工作了

      【讨论】:

        猜你喜欢
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多