如何确定程序集是否已生成?
如何确定特定的 .Net 程序集是否已被 ngen 生成?我需要从代码中检查。即使调用命令行也可以。目前我看不出有任何方法可以确定这一点。
How can you determine whether a particular .Net assembly has already been ngen'd or not? I need to check from code. Even invoking the command-line would be fine. At the moment I can't see any way of determining this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从代码检查
检查我们是否正在为执行程序集加载本机映像。我正在加载的模块文件名属性中寻找模式“\ assemblyname.ni”。
命令行解决方案:
在命令提示符下运行“ngen display”。
示例:
ngen display MyTestsApp.exe
如果已安装,它会打印出类似的内容
原生图像:
MyTestsApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
并返回 0 (%errorlevel%)
否则,它将打印出:
错误:未安装指定的程序集。
返回-1
Check From Code
Check if we are loading an native image for the executing assembly. I am looking for the pattern "\assemblyname.ni" in loaded module filename property.
Command Line Solution:
Run "ngen display " on command prompt.
Example:
ngen display MyTestsApp.exe
If installed, it prints out something like
Native Images:
MyTestsApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
and returns 0 (%errorlevel%)
Otherwise, it prints out:
Error: The specified assembly is not installed.
and returns -1
您可以尝试在“ngen缓存”(C:\ Windows \ assembly \ NativeImages_v2XXXXXXX)中找到您的程序集。
Cached 程序集将具有以下格式名称:
[基本名称].ni.[基本扩展名]。
You can try to find your assembly in "ngen cache" (C:\Windows\assembly\NativeImages_v2XXXXXXX).
Сached assemblies will have the following format name:
[basename].ni.[baseextension].