Visual Studio 2015 Community update 3,尝试C++代码分析功能。设置如下:
solution properties > code analysis settings > [all configurations] [all platforms] : microsoft native recommended settings
project properties > code analysis > [all configurations] [all platforms] : microsoft native recommended settings
每当我跑步
analyze > run code analysis on solution
时,我总会得到一个c1xx : fatal error C1253: Unable to load model file 'res://mspft140.dll/300'
。每个项目都会发生这种情况,无论是新的还是现有的。 MSDN 对于这个问题不是特别有帮助。
该字符串是一个res协议,所以我检查了提到的dll是否位于正确的位置(实际上有两个,在
c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\
和c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64
),并用resedit打开它们。两者都包含一个名为 300
的 XML 资源,因此我看不出 VS 无法加载它的任何原因。重置设置没有帮助,完全卸载并重新安装(浪费了半天)也没有帮助。
我在VS中运行代码分析时也用[Path] [contains] [mspft]
过滤器运行了
procmon,但文件系统结果只有
SUCCESS
和FILE LOCKED WITH ONLY READERS
,这看起来还可以。
有人遇到过这个错误吗?有人猜测其原因吗?
更新:在使用不同的过滤器彻底查看更多 procmon 捕获后,我发现
cl.exe
尝试打开此注册表项值:HKCR\PROTOCOLS\Handler\res\CLSID
。显然,它会查找错误输出中提到的 res
协议的处理程序 - 但找不到它,而 res
键的许多同级项引用了一些有效的处理程序,例如,http
键有 CLSID
{79eac9e2-baf9-11ce-8c82-00aa004ba90b}
的值。我想我现在的任务是弄清楚 res
CLSID
意味着什么。
我对
res
协议处理程序的假设是正确的。正确的 HKCR\PROTOCOLS\Handler\res\CLSID
值为 {3050f3bc-98b5-11cf-bb82-00aa00bdce0b}
(指的是 C:\Windows\System32\mshtml.dll
)。由于某种原因,我的注册表丢失了它;一旦我添加了该值,代码分析就开始正常工作。
我希望这对某人有帮助,尽管我相信这个错误非常罕见。