2012-01-15 174 views
1

这是一个后续到这样一个问题:.NET - NGEN编译x86汇编

NGEN x86 vs x64 with .NET executables

我知道,它可能使用NGEN自定义安装动作,但我用Inno Setup的,所以我必须手动做。

问题:如果我的程序集是以x86模式编译的,我应该始终使用x86版本的ngen.exe,还是取决于操作系统(x86 x86上的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)

理想情况下,我想编译成机代码主组件(86)和它的所有相关性(混合x86和AnyCPU构建)。

请指教。

回答

0

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

1

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

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

链接到NSIS脚本:​​