Microsoft.CppClean.targets删除我需要的文件

时间:2013-08-02 13:53:02

标签: visual-studio-2012 rebuild

我有VS2012解决方案。其中一个项目A在运行时生成.h文件。此头文件由另一个项目B使用。项目A和项目B位于同一目录中。

但是,当Project B开始重建时,C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppClean.targets将删除项目A生成的文件。由于此项目B不能找到该文件并构建失败。

如何避免在干净构建期间删除文件?这两个项目是否应该移到另一个目录?

请注意,Visual Studio 2008中不会出现此问题。

3 个答案:

答案 0 :(得分:1)

您是否在解决方案中设置了build order?必须明确设置项目B依赖于A,除非您使用project referencing functionality built into VS直接设置两个项目之间的依赖关系。

答案 1 :(得分:1)

Is this header generated in the temp ("Intermediate") directory by a "Build Event"? If so, then Project B assumes it's a temp file and deletes it. This is because project B's cleanup finds the header in the temp directory but doesn't know that it's an output of Project A. Possible solutions:

  • Separate the output folder from the temp folder and generate the header in the output folder.
  • Keep the output and temp folders together but separate the output/temp folder of Project A from that of Project B.
  • Generate the header in a Custom Build Step instead of a Build Event, and specify the header as the Output of the step.

答案 2 :(得分:0)

我在迁移到VS 2015时面临同样的问题。解决方案是设置"配置属性 - >通用 - >中间目录" to .. \\ $(ProjectName)\以便Build.CppClean不会清除其他不相关项目的以前的构建dll。这对我有用。