[英]How can I find the location of a file in the system path, like get-command or where?
[英]Where can I find location of generated file after doing Ngen?
我在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
具体位置因版本而异,但与此类似:
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。
只是在这里探讨一些类似的问题,如果您在注册表中进行更改,则可以在资源管理器中导航。
在HKEY_LOCAL_MACHINE \\ Software \\ Microsoft \\ Fusion下,创建名为DisableCacheViewer的DWORD条目,并将其设置为1。
之后,打开一个新的资源管理器窗口并导航到例如c:\\ windows \\ assembly。
尝试使用ngen显示AssemblyName / verbose | findstr“文件:”
例如:%windir%\\ Microsoft.NET \\ Framework \\ v4.0.30319 \\ ngen.exe显示System.Xaml / verbose | findstr“文件:”
您可以在c:\\ windows \\ assembly中的NativeImages_blabla文件夹中找到它们。 另外我注意到.NET 3.5及更高版本实际上不允许物理访问NGENed图像。 我想它恢复为所有文件使用一个大型数据库,但我不能确定,因为生成的图像无法在磁盘上看到。
好吧,你看到需要很长时间才能找到位置!
好吧,它在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
文件夹的根目录中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.