Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 Microsoft.CppClean.targets删除我需要的文件_Visual Studio 2012_Rebuild - Fatal编程技术网

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

Visual studio 2012 Microsoft.CppClean.targets删除我需要的文件,visual-studio-2012,rebuild,Visual Studio 2012,Rebuild,我有一个VS2012解决方案。其中一个项目A在运行时生成一个.h文件。此头文件由另一个项目B使用。项目A和项目B位于同一目录中 但是,当项目B开始重新生成时,C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppClean.targets将删除项目A生成的文件。由于此原因,项目B无法再找到该文件,生成失败 如何避免在干净构建期间删除文件?这两个项目是否应该移动到不同的目录 请注意,此问题在Visual Studio

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

但是,当项目B开始重新生成时,C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppClean.targets将删除项目A生成的文件。由于此原因,项目B无法再找到该文件,生成失败

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


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

您在解决方案中设置了吗?必须明确设置项目B依赖于A,除非您使用直接设置两个项目之间的依赖关系。

此标头是由“生成事件”在temp(“中间”)目录中生成的吗?如果是这样,那么项目B假定它是一个临时文件并将其删除。这是因为项目B的清理在临时目录中找到标题,但不知道它是项目A的输出。可能的解决方案:

  • 将输出文件夹与临时文件夹分开,并在输出文件夹中生成标题
  • 将输出和临时文件夹放在一起,但将项目A的输出/临时文件夹与项目B的输出/临时文件夹分开
  • 在自定义生成步骤而不是生成事件中生成标头,并将标头指定为该步骤的输出

迁移到VS 2015时,我也面临同样的问题。解决方案是将“配置属性->常规->中间目录”设置为..\\$(项目名称)\n以便Build.CppClean不会从其他无关项目中清理以前的生成DLL。这对我很有效。

是的,项目依赖项设置正确。项目A首先生成,并在运行时生成文件。当项目B启动生成时,它会删除这些文件,尽管这些文件是为项目B生成的。@YonatanSimson然后问一个新问题