6

我正在尝试使用 NGen 来查看我的应用程序的本机映像是否比 .NET 运行得更好。但是,我在弄清楚该怎么做时遇到了一些麻烦。

我的应用程序名为MyApp.exe,它有几个依赖 DLL。

我打开 VS 2010 命令提示符并运行:

ngen install MyApp.exe /Profile

命令输出未表明遇到任何问题。

然后我去 C:\Windows\assembly 尝试运行 EXE,但在那里找不到它(我在 Windows 7 上)。一点点挖掘告诉我使用命令提示符浏览到 C:\Windows\assembly\NativeImages_v4.0.30319_32。我最终能够在那里找到我的 MyApp.ni.exe,但当然无法在资源管理器中打开包含文件夹。

我试图运行程序,它告诉我:

“C:\Windows\assembly\NativeImages_v4.0.30319_32...\MyApp.ni.exe 不是有效的 Win32 应用程序。”

命令输出说访问被拒绝。

我有两个问题:

  1. 我怎样才能运行这个程序,以便我可以执行本机版本。
  2. 我将如何分析它?看起来我无法从 VS2010 分析器中找到该文件夹​​,因为它在资源管理器中看不到。

谢谢。

4

1 回答 1

1

看来我应该多读一点。似乎我可以只执行传递给 NGEN 的 EXE,它应该自动从缓存中加载本机内容。

另一个问题是我必须同时使用 /profile 和 /debug 标志来运行 ngen 以确保我可以同时做到这两个。

这是关于这个问题的一个很好的教程:

http://blogs.msdn.com/b/clrcodegeneration/archive/2010/04/27/ngen-getting-started-with-ngen-in-visual-studio.aspx

于 2011-06-24T19:30:23.057 回答