如何强制 DotNet 框架使用 JIT 而不是 NGEN?

How do I force the DotNet Framework to use JIT instead of NGEN?

我正在调试与在进程中加载​​ DotNet Framework 程序集的本机图像相关的问题,例如System.Windows.Forms.ni.dll 我想停止加载这些原生图像。有人有什么想法吗?

另一个可能有用的场景是使用 SOS 或其他一些 WinDbg 扩展来管理代码。这些工具适用于托管代码,因此您不会不希望 NGEN 将 DotNet Framework dll 转换为本机图像。

参考:https://docs.microsoft.com/en-us/dotnet/framework/tools/ngen-exe-native-image-generator

谢谢!

您可以通过将 COMPLUS_ZapDisable 环境变量设置为 1 来禁用 NGEN 图像加载。有了这个变量,.Net 应该加载原始程序集而不是本地图像。但它会减慢一切,因为 .Net 需要 JIT 框架程序集中的所有代码。

查看这篇文章:https://blogs.msdn.microsoft.com/sburke/2008/01/29/how-to-disable-optimizations-when-debugging-reference-source/