执行完Ngen后,在哪里可以找到生成文件的位置?

| 我在C#可执行文件上执行了Ngen。它成功完成了,但是我无法弄清楚生成的文件在我的PC中的位置。 MSDN表示应将其放在本机映像缓存中,但仍无法确定其位置。 编辑:我想在它上运行objdump,因此我需要物理文件 EDIT2:我运行ngen的putput是:
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
    
已邀请:
确切位置会因版本而异,但这将类似于以下内容:
C:\\Windows\\assembly\\NativeImages_v2.0.50727_32\\System.Web\\ace3bede2f516f9e5bca620ad86cc063>System.Web.ni.dll
它们以
C:\\Windows\\assembly
开始,然后每个.NET版本都有一个子文件夹
NativeImages_vXXX
。然后,每个具有本机映像的dll都有一个子文件夹。在该文件夹下,还有一个用于唯一版本标识符的子文件夹(因此,您可以具有来自同一DLL的不同版本的多个本机映像)。最后,本机dll本身。 请注意,您无法在Windows Exlporer中导航到此目录。使用cmd。在资源管理器中,有一个Shell扩展程序,它隐藏了GAC和本机映像的工作方式的详细信息,并且仅向您显示了一个漂亮的UI。     
只是在这里探索一些类似的问题,如果您在注册表中进行了更改,则可以在资源管理器中导航GAC。 在HKEY_LOCAL_MACHINE \\ Software \\ Microsoft \\ Fusion下,创建一个名为DisableCacheViewer的DWORD条目,并将其设置为1。 之后,打开一个新的资源管理器窗口,然后导航至c:\\ windows \\ assembly。     
您可以在c:\\ windows \\ assembly的NativeImages_blabla文件夹中找到它们。我也注意到.NET 3.5及更高版本实际上不允许物理访问NGENed映像。我猜它恢复为对所有文件使用一个大型数据库,但是我不能确定,因为生成的映像在磁盘上找不到位置。     
尝试ngen display AssemblyName / verbose | findstr \“文件:\” 例如: %windir%\\ Microsoft.NET \\ Framework \\ v4.0.30319 \\ ngen.exe显示System.Xaml / verbose | findstr \“文件:\”     
好吧,您发现很长时间才找到位置! 好的,它在
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
您会发现它很棒。我的意思是,在这里我只能看到所需的文件夹,而看不到程序集。好吧,没问题,要开心。 因此,我的应用程序是用
v4
和64位编译构建的,因此我所需的EXE文件位于
NativeImages_v4.0.30319_64
文件夹的根目录中。     

要回复问题请先登录注册