6

NGen を使用して、アプリケーションのネイティブ イメージが .NET よりも適切に動作するかどうかを確認しようとしています。とはいえ、どうすればいいのかわからず困っています。

私のアプリケーションはMyApp.exeと呼ばれ、いくつかの依存 DLL があります。

VS 2010 コマンド プロンプトを開いて実行しました。

ngen install MyApp.exe /Profile

コマンド出力は、問題が発生したことを示唆していませんでした。

次に、C:\Windows\assembly に移動して EXE を実行しようとしましたが、そこでは見つかりませんでした (私は Windows 7 を使用しています)。少し調べてみると、コマンド プロンプトを使用して C:\Windows\assembly\NativeImages_v4.0.30319_32 を参照するように指示されました。私は最終的にそこに MyApp.ni.exe を見つけることができましたが、もちろん、含まれているフォルダーをエクスプローラーで開くことはできませんでした。

プログラムを実行しようとしたところ、次のように言われました。

「C:\Windows\assembly\NativeImages_v4.0.30319_32...\MyApp.ni.exe は有効な Win32 アプリケーションではありません。」

コマンド出力は、アクセスが拒否されたと述べています。

2 つの質問がありました。

  1. ネイティブ バージョンを実行できるように、このプログラムを実行するにはどうすればよいですか。
  2. それをプロファイリングするにはどうすればよいですか?エクスプローラーで表示できないため、VS2010 プロファイラー内からそのフォルダーを見つけることができないようです。

ありがとう。

4

1 に答える 1

1

もう少し読むべきだったようです。NGENに渡されたEXEを実行するだけで、キャッシュからネイティブのものを自動的にロードできるようです。

もう 1 つの問題は、/profile フラグと /debug フラグの両方を指定して ngen を実行し、両方を実行できるようにする必要があったことです。

これは、この問題に関する素晴らしいチュートリアルです。

http://blogs.msdn.com/b/clrcodegeneration/archive/2010/04/27/ngen-getting-started-with-ngen-in-visual-studio.aspx

于 2011-06-24T19:30:23.057 に答える