如何处理在被取消的构建中随机损坏的预编译头文件?

Lau*_*dou 8 c++ pch visual-c++ visual-c++-2012

我使用Visual C++ 2012和一个大量使用预编译头的项目.如此沉重以至于臭名昭着/ Zm开关正在使用中.

当我取消正在进行的构建时,我有时会在下一个构建中出现此错误:

error C1852: 'foo.pch' is not a valid precompiled header file
Run Code Online (Sandbox Code Playgroud)

十分之九,事情会顺利进行,但是当发生这种情况时,我必须找到.pch并在重新启动构建之前手动删除它.

这让我有点恼火.有没有办法防止这种情况发生?来自微软的补丁?或者强制Visual删除.pch并在问题发生时自动重新启动构建的方法?或者其他一些我没想过的解决方案?

编辑:这是我正在运行的Visual版本:

Microsoft Visual Studio Professional 2012
Version 11.0.61030.00 Update 4
Run Code Online (Sandbox Code Playgroud)

Lau*_*dou 0

我按照 rockeye 的建议尝试在这些损坏的文件中找到模式。事实证明这非常简单:有效的文件以VCPCH0标头开头,而损坏的文件则不然。

一个简单的 C# 程序作为失败项目的预构建事件运行并删除损坏的文件解决了该问题。如果有人感兴趣,来源就在这里