Visual Studio 2015:C++代码分析错误 C1253,无法加载模型文件"res://mspft140.dll/300"

Visual Studio 2015: C++ code analysis error C1253, unable to load model file 'res://mspft140.dll/300'

本文关键字:文件 模型 加载 dll mspft140 res 代码 C++ 2015 Studio Visual      更新时间:2023-10-16

Visual Studio 2015社区更新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.0VCbinc:Program Files (x86)Microsoft Visual Studio 14.0VCbinamd64),并使用resedit打开它们。两者都包含一个名为300的XML资源,所以我看不出VS无法加载它的任何原因。重置设置没有帮助,完全卸载和重新安装(浪费了半天)也没有。

我还运行了procmon[Path] [contains] [mspft]过滤器在VS中运行代码分析,但文件系统的结果只有SUCCESSFILE LOCKED WITH ONLY READERS,这似乎是ok的。

有人遇到这个错误吗?有人对其原因有什么猜想吗?


更新:在彻底查看了使用不同过滤器的更多procmon捕获后,我发现cl.exe试图打开此注册表键值:HKCRPROTOCOLSHandlerresCLSID。显然,它寻找错误输出中提到的res协议的处理程序-并且没有找到它,而res密钥的许多兄弟姐妹引用了一些有效的处理程序,例如,http密钥的CLSID值为{79eac9e2-baf9-11ce-8c82-00aa004ba90b}。我想我现在的任务是弄清楚res CLSID是什么意思

我对res协议处理程序的假设是正确的。正确的HKCRPROTOCOLSHandlerresCLSID值为 {3050f3bc-98b5-11cf-bb82-00aa00bdce0b} (即C:WindowsSystem32mshtml.dll)。出于某种原因,我的注册表上没有这个;一旦我添加了这个值,代码分析就开始工作了,没有错误。

我希望这能帮助到一些人,尽管我相信这个bug是非常罕见的。