23

私はC#実行可能ファイルでNgenを実行しました。成功しましたが、生成されたファイルがPCのどこにあるのかわかりません。MSDNによると、ネイティブイメージキャッシュにあるはずですが、それでもどこにあるのかわかりません。

編集:その上でobjdumpを実行したいので、物理ファイルが必要です

EDIT2:ngenを実行する私のプットプットは:

C:\Documents and Settings\nmea\My Documents\Visual Studio 2008\Projects\Consol
eApplication4\ConsoleApplication4\bin\Release>ngen install ConsoleApplication4.e
xe
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.3053
Copyright (c) Microsoft Corporation.  All rights reserved.
Installing assembly C:\Documents and Settings\nmea\My Documents\Visual Studio
2008\Projects\ConsoleApplication4\ConsoleApplication4\bin\Release\ConsoleApplica
tion4.exe
    Compiling assembly C:\Documents and Settings\nmea\My Documents\Visual Stud
io 2008\Projects\ConsoleApplication4\ConsoleApplication4\bin\Release\ConsoleAppl
ication4.exe (CLR v2.0.50727) ...
ConsoleApplication4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
4

5 に答える 5

23

正確な場所はバージョンによって異なりますが、次のようになります。

C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Web\ace3bede2f516f9e5bca620ad86cc063>System.Web.ni.dll

それらは最初に始まり、次に各.NETバージョンC:\Windows\assemblyのサブフォルダーがあります。NativeImages_vXXX次に、ネイティブイメージを持つ各dllのサブフォルダーがあります。その下に、一意のバージョン識別子の別のサブフォルダーがあります(したがって、同じdllの異なるバージョンからの複数のネイティブイメージを持つことができます)。最後に、ネイティブdll自体。

WindowsExlporerではこのディレクトリに移動できないことに注意してください。cmdを使用します。Explorerには、GACとネイティブ画像の動作の詳細を非表示にし、よりきれいなUIを表示するシェル拡張機能があります。

于 2011-04-14T01:45:52.527 に答える
22

ここでいくつかの同様の問題を調査するだけで、レジストリに変更を加えた場合、エクスプローラでGACをナビゲートできます。

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Fusionの下に、DisableCacheViewerという名前のDWORDエントリを作成し、1に設定します。

その後、新しいエクスプローラウィンドウを開き、c:\ windows\assemblyなどに移動します。

于 2012-03-14T15:56:02.470 に答える
2

それらは、c:\ windows\assemblyのNativeImages_blablaフォルダーにあります。また、.NET 3.5以降では、実際にはNGENされたイメージに物理的にアクセスできないことにも注意しました。すべてのファイルに1つの大きなデータベースを使用するように戻ったと思いますが、生成されたイメージがディスク上のどこにも表示されないため、確信が持てません。

于 2011-04-14T01:28:37.343 に答える
2

ngen display AssemblyName /verbose|を試してください findstr "ファイル:"

例:%windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ ngen.exe display System.Xaml / verbose | findstr "ファイル:"

于 2013-07-19T07:17:15.330 に答える
1

さて、あなたは場所がどこにあるかを見つけるのに長い時間がかかったのを見るでしょう!

さて、c:\Windows\assemblyフォルダ内にありますが、このフォルダを開いたときは.NETアセンブリしか見えなかったので、隠しフォルダがいくつかあると思いました。だから私は管理者権限でコマンドプロンプトを開くと、以下に示すようにフォルダのリストを見ることができました...

GAC,  GAC_32,  GAC_64,  GAC_MSIL,  NativeImages_v2.0.50727_32
NativeImages_v2.0.50727_64,  NativeImages_v4.0.30319_32,
NativeImages_v4.0.30319_64

あなたはそれが素晴らしいことがわかります。つまり、ここでは必要なフォルダーのみが表示され、アセンブリは表示されません。まあ、問題ありません、幸せになります。

したがって、私のアプリケーションは組み込みでv464ビットコンパイルされているため、必要なEXEファイルはNativeImages_v4.0.30319_64フォルダーのルートにあります。

于 2017-04-23T10:01:39.173 に答える