1

我有一个 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 中不会出现此问题。

4

3 回答 3

1

您是否在解决方案中设置了构建顺序?必须明确设置项目B依赖A,除非你使用VS内置的项目引用功能直接设置两个项目之间的依赖关系。

于 2013-08-02T14:02:08.807 回答
1

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

  • 将输出文件夹与临时文件夹分开,并在输出文件夹中生成标头。
  • 将输出和临时文件夹放在一起,但将项目 A 的输出/临时文件夹与项目 B 的文件夹分开。
  • 在自定义构建步骤而不是构建事件中生成标题,并将标题指定为步骤的输出。
于 2015-07-28T15:44:06.683 回答
0

我在迁移到 VS 2015 时遇到了同样的问题。解决方案是将“配置属性->常规->中间目录”设置为 ..\\$(ProjectName)\ 以便 Build.CppClean 不会清理以前的构建 dll来自其他不相关的项目。这对我有用。

于 2017-01-05T09:25:37.430 回答