NGen对我的计算机不满意,我无法找到一种方法来深入了解出了什么问题.
每次启动后,ngen都会记录以下消息:
.NET运行时优化服务(clr_optimization_v2.0.50727_32) - 服务达到了瞬态错误的限制.将关闭.从Service Manager返回的上一个错误:0x8000ffff.
当我尝试在命令行启动优化服务时,我会再次记录相同的错误.
我设法启动了ngen服务并立即暂停队列(通过编写两行批处理文件,如下所示:
net start clr_optimization_v2.0.50727_32
ngen队列暂停
所以现在我尝试通过执行不同状态级别的项目来清除队列,如下所示:
ngen executionqueueditems 3/nologo/verbose
但结果总是:
灾难性故障(HRESULT异常:0x8000FFFF(E_UNEXPECTED))
...沿途我已经卸载/重新安装了visual studio 2008.我已经卸载了SQL Server 2005,并且我运行了'系统文件检查器':sfc/scannow
缺乏想法,并希望得到ngen专家的帮助.
我如何获得诸如"导致这些灾难性故障的原因?"等信息.(请注意,/ verbose选项不会增加我发现的信息量."队列中要生成哪些文件?" - 我可以删除其中的一些文件,或者将责任归咎于特定文件. ..
卸载并重新安装.net framework 2.0并不容易,因为这是vista,它是操作系统的受保护部分.
更新:我也尝试了这里提供的建议(并在第一个回复中提到) - 但我只是得到了相同的灾难性失败消息.
C:\ Windows\Microsoft.NET\Framework\v2.0.50727> ngen executequeueditems/nologo灾难性故障(HRESULT异常:0x8000FFFF(E_UNEXPECTED))
由此:
当 .NET 运行时优化服务遇到它认为是暂时性错误时,它会尝试重新尝试编译程序集;示例包括 RPC 错误、内存不足错误等。但是,在尝试编译同一程序集 20 次但仍然失败后,它会输出上述消息并关闭。我发现您已经尝试从计算机上卸载 .NET Framework 2.0 并重新安装它,但仍然出现此错误。我猜尝试修复安装也无济于事。您是否可以尝试从 %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ 运行“ngen.exe ExecuteQueuedItems”,然后运行“ngen.exe Update”?这将尝试同步编译尚未具有任何/最新 32 位 NGen 映像的所有程序集,而无需通过优化服务。更新命令完成后,您是否可以再次尝试启动服务并检查系统日志中是否仍然收到相同的消息?如果此问题不是特定于服务的,我希望您也会在命令行输出中看到编译错误。