1

这是对这个问题的跟进:

NGEN x86 与带有 .NET 可执行文件的 x64

我知道 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) ... 01/15/2012 15:05:28 [2432]: 1> 编译 C:\Program Files\MyApp\MyApp 时出错。 exe:此版本与您运行的 Windows 版本不兼容。检查您计算机的系统信息以查看您是否需要 x86(32 位)或 x64(64 位)版本的程序,然后联系软件发行商。(来自 HRESULT 的异常:0x800700D8)

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

请指教。

4

2 回答 2

1

我在 IronScheme 上与 NSIS 有类似的问题。

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

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

于 2012-04-02T20:53:33.350 回答
0

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

于 2012-04-02T20:48:16.767 回答