1

これは、この質問のフォローアップです。

.NET 実行可能ファイルを使用した NGEN x86 と x64 の比較

カスタム セットアップ アクションを使用して NGEN を実行できることはわかっていますが、私は Inno Setup を使用しているため、手動で行う必要があります。

質問: アセンブリが x86 モードでコンパイルされている場合、常に x86 バージョンの ngen.exe を使用する必要がありますか、または OS (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 のバージョンと互換性がありません。コンピューターのシステム情報を調べて、プログラムの x​​86 (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 に答える