我在一个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
发布于 2011-04-14 09:45:53
具体位置因版本而异,但与以下内容类似:
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。在Explorer中有一个shell扩展,它隐藏了GAC和本机图像如何工作的细节,只向您显示了一个更漂亮的UI。
发布于 2012-03-14 23:56:02
只是在这里探索一些类似的问题,如果你在注册表中做了更改,你可以在浏览器中导航GAC。
在HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion下,创建一个名为DisableCacheViewer的DWORD项,并将其设置为1。
之后,打开一个新的资源管理器窗口并导航到c:\windows\assembly。
发布于 2011-04-14 09:28:37
您可以在c:\windows\ NativeImages_blabla下的程序集文件夹中找到它们。另外,我注意到.NET 3.5和更高版本实际上不允许物理访问NGENed镜像。我猜它恢复到对所有文件使用一个大型数据库,但我不能确定,因为生成的图像在磁盘上看不到。
https://stackoverflow.com/questions/5657566
复制相似问题