需要帮助让NGen恢复工作状态

时间:2009-02-07 14:56:12

标签: .net clr ngen

NGen对我的电脑不满意,我找不到办法深入了解出了什么问题。

每次启动后,ngen都会记录以下消息:

  

.NET运行时优化服务   (clr_optimization_v2.0.50727_32) -   服务达到了瞬态限制   错误。将关闭。上次错误   从服务经理返回:   0x8000ffff。

当我尝试在命令行启动优化服务时,我会再次记录相同的错误。

我设法启动ngen服务并立即暂停队列(通过编写两行批处理文件,如下所示:

  

净开始   clr_optimization_v2.0.50727_32

     

ngen队列暂停

所以现在我尝试通过执行不同状态级别的项目来清除队列,如下所示:

  

ngen executionqueueditems 3 / nologo   /冗长

但结果总是如此:

  

灾难性失败(来自的例外)   HRESULT:0x8000FFFF(E_UNEXPECTED))

...我一直在卸载/重新安装visual studio 2008。 我已经卸载了SQL Server 2005,并且我运行了'系统文件检查器':  sfc / scannow

缺乏想法,并希望得到ngen专家的帮助。

我如何获得诸如此类的信息 “是什么导致了这些灾难性的失败?”  (请注意,/ verbose选项不会增加我发现的信息量。 “队列中要生成哪些文件?” - 我可以删除其中的一些文件,或将责任归咎于特定文件...

卸载并重新安装.net framework 2.0并不容易,因为这是vista,它是操作系统的受保护部分。

更新: 我也尝试了here提供的建议(并在第一个回复中提到) - 但我只是得到了同样的灾难性失败信息。

  

C:\的Windows \ Microsoft.NET \框架\ V2.0.50727> NGEN   executequeueditems / nologo   灾难性的失败(例外   HRESULT:0x8000FFFF(E_UNEXPECTED))

3 个答案:

答案 0 :(得分:3)

回答这部分问题:

  

“是什么导致了这些灾难性的灾难   失败?“

有两个日志文件可以帮助解决这个问题:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.log
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen_service.log

(和通常的应用程序日志一样,虽然不太有帮助)

回答:

  

“队列中有哪些文件   产生?“

通常的答案是,可以通过运行来看到:

ngen.exe display

(虽然在我的情况下它只返回

NGEN Roots:    
Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

答案 1 :(得分:2)

我遇到了同样的问题(安装Asp MVC 1.0)。 寻找答案我已经发现Haacked Blog已经解释了一些原因。 花了2个小时试图解决这个问题,我感到非常沮丧,以至于我已经使用了

ngen /delete *

有效。但我不确定它是否会造成小小的灾难; /

也许这会有所帮助..

答案 2 :(得分:1)

来自this

  

.NET运行时优化服务   试图重新编译   组件遇到它时的情况   认为是短暂的错误;   示例包括RPC错误,   内存不足错误等。但是,   之后它试图编译相同的   组装20次,但仍然失败   为此,它输出上面的消息   并关闭。我明白你了   已经尝试卸载.NET   来自您的机器的Framework 2.0   重新安装它,但你还有   这个错误。我在猜测   修复安装没有帮助   无论是。你可以尝试跑步吗?   随后是“ngen.exe ExecuteQueuedItems”   来自“ngen.exe更新”   %WINDIR%\ Microsoft.NET \框架\ V2.0.50727 \?   那将尝试编译所有   尚未拥有的程序集   任何/最新的32位NGen图像   同步而不经过   优化服务。一旦   更新命令完成,你能一次吗?   再次尝试启动服务和   检查你是否还能得到   系统日志中的相同消息?如果   这个问题并不是特定的   服务,我希望你会看到   命令行中的编译错误   输出也是如此。