在应用程序事件日志中,我看到了数百条错误消息,如下所示:
.NET Runtime Optimization Service (clr_optimization_v4.0.30319_32) - 1>Failed to compile: System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 . Error code = 0x80131f06, Event id = 1101
在ngen.log (C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319)
中,我看到如下错误:
Error compiling System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: NGen cannot proceed because Mscorlib.dll does not have a native image (Exception from HRESULT: 0x80131F06)
如果在命令提示符下运行以下命令,我也会收到类似的错误消息:
ngen install system.dll
我设法找出了引发错误的原因:这是因为以下注册表项中存储了无效信息:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\NativeImagesIndex\v4.0.30319_32\index17c]:
NIUsageMask
和ILUsageMask
我可以通过删除位于C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319的index17c.dat文件来重现另一台计算机上的错误。该文件是隐藏的,空的,其名称决定了上面提到的注册表路径。
我的问题是:这可能是什么原因? (有人手动改变注册表中的值是不可能的)