这个问题有时会出现在我们域中的几台机器上:用户启动我的 .NET 4.0 应用程序,但没有任何反应。机器运行 Windows XP,.NET 版本为 4.0.30319.1008
正如我在任务管理器中看到的,该进程已启动,但它仅使用 40 KB 内存(有时更多,例如 404 KB,但普通运行的进程需要更多)。当我试图杀死这个进程时,系统说它已成功完成,但该进程保留在内存中并且 .exe 文件被锁定。只有重新启动机器有助于终止进程并解锁文件。
我尝试使用ProcMon进行分析,但我可以看到很少的事件,并且进程在加载其图像之前停止(加载图像操作不会发生)。所以原因不在我的应用程序中。
作为一种解决方法,我尝试了一些方法:
重建应用程序并在其位置替换 .exe - 它有帮助!但是两个EXE文件之间的区别只是改变了MVID GUID和.exe中包含的一些其他编译信息
所以我的想法是程序集的崩溃本机映像缓存在某处,因此替换 .exe 会启动系统重建它。我在这方面并不强,但我尝试了“ngen update”指令——有时它有帮助,有时没有。
一段时间后,问题在某些机器上重复出现。
我怎样才能找到导致问题的原因?