Visual Studio 项目导入后无法构建 2012 C++ 解决方案
Visual Studio 2012 C++ solution cannot be built after project import
我使用 Visual Studio 2012 Premium(版本 11.0.61219.00 更新 5)。一些项目有一个 C++ 解决方案。一切都可以毫无错误地构建。然后我将一个新的(但已经存在的)项目导入到这个解决方案中(通过右键单击 -> Add
-> Existing Project...
)。如果我现在尝试构建这个项目或之前的任何其他项目,则会出现一条错误消息:"Cannot perform requested action because a build is already in project"
(这不是真的,没有构建 运行)。
如果我尝试重建完整的解决方案,则会显示另一条消息:"The operation could not be completed. Wrong parameter."
同时,输出视图中完全没有错误或警告。而是给出了构建摘要,看起来不错。
Build Summary
-------------
Total build time: 00:12.379
========== Rebuild All: 0 succeeded or up-to-date, 0 failed, 12 skipped, Completed at 30.09.2015 17:15:58 ==========
这里可能出了什么问题?该项目似乎完好无损,我可以打开并查看属性,没有任何可疑之处。事实上,我以相同的方式从同一来源导入了其他 11 个项目。我在哪里可以获得一些 Visual Studio 日志文件或打开任何可以为我指明正确方向的扩展诊断?
帮帮我,我卡住了!
我们现在弄清楚了这种行为的原因。 "guilty" 项目包含对解决方案中其他项目的引用。其他项目也这样做了(并且有效);但此特定引用的项目 GUID 与引用项目的实际 GUID 不一致。如果我们在文本编辑器中查看 *.vcxproj 文件的内容,我们会发现此 GUID 是 <ProjectReference>
元素中嵌套的 <Project>
元素(s. 屏幕截图)。
正如我在评论中提到的,所有项目都是从以特定领域语言编写的外部规范生成的。生成器机制中存在一个微妙的错误,在某些情况下会导致此错误的 GUID 引用。
然而,令我吃惊的是Visual Studio竟然没有针对如此明显的问题显示任何易于理解的错误信息!如果参考项目的路径不正确,Studio 会用粗体感叹号指出这一点(见屏幕截图)。如果 GUID 无效,为什么不这样做呢?我们花了几个小时来诊断这件小事。
我使用 Visual Studio 2012 Premium(版本 11.0.61219.00 更新 5)。一些项目有一个 C++ 解决方案。一切都可以毫无错误地构建。然后我将一个新的(但已经存在的)项目导入到这个解决方案中(通过右键单击 -> Add
-> Existing Project...
)。如果我现在尝试构建这个项目或之前的任何其他项目,则会出现一条错误消息:"Cannot perform requested action because a build is already in project"
(这不是真的,没有构建 运行)。
如果我尝试重建完整的解决方案,则会显示另一条消息:"The operation could not be completed. Wrong parameter."
同时,输出视图中完全没有错误或警告。而是给出了构建摘要,看起来不错。
Build Summary
-------------
Total build time: 00:12.379
========== Rebuild All: 0 succeeded or up-to-date, 0 failed, 12 skipped, Completed at 30.09.2015 17:15:58 ==========
这里可能出了什么问题?该项目似乎完好无损,我可以打开并查看属性,没有任何可疑之处。事实上,我以相同的方式从同一来源导入了其他 11 个项目。我在哪里可以获得一些 Visual Studio 日志文件或打开任何可以为我指明正确方向的扩展诊断? 帮帮我,我卡住了!
我们现在弄清楚了这种行为的原因。 "guilty" 项目包含对解决方案中其他项目的引用。其他项目也这样做了(并且有效);但此特定引用的项目 GUID 与引用项目的实际 GUID 不一致。如果我们在文本编辑器中查看 *.vcxproj 文件的内容,我们会发现此 GUID 是 <ProjectReference>
元素中嵌套的 <Project>
元素(s. 屏幕截图)。
正如我在评论中提到的,所有项目都是从以特定领域语言编写的外部规范生成的。生成器机制中存在一个微妙的错误,在某些情况下会导致此错误的 GUID 引用。
然而,令我吃惊的是Visual Studio竟然没有针对如此明显的问题显示任何易于理解的错误信息!如果参考项目的路径不正确,Studio 会用粗体感叹号指出这一点(见屏幕截图)。如果 GUID 无效,为什么不这样做呢?我们花了几个小时来诊断这件小事。