2013-08-02 101 views
1

我有一個VS2012解決方案。項目A之一在運行時生成一個.h文件。此頭文件由另一個項目B使用。項目A和項目B位於同一個目錄中。Microsoft.CppClean.targets刪除我需要的文件

但是,當項目B開始重建時,C:\ Program Files文件(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppClean.targets刪除項目A生成的文件。由於此項目B無法找到該文件,並且構建失敗。

如何避免在乾淨構建過程中被刪除的文件?這兩個項目應該移到不同的目錄嗎?

注意,在Visual Studio中不會出現此問題2008

回答

1

你有沒有設置在溶液中build order?必須明確設置項目B依賴於A,除非使用project referencing functionality built into VS直接設置兩個項目之間的依賴關係。

+0

是的,項目依賴關係設置正確。項目A首先構建並在運行時生成文件。當項目B開始構建時,它會刪除這些文件,儘管項目B需要構建這些文件。 – Amol

+0

@YonatanSimson然後問一個新的問題 – Mgetz

1

這個頭是由「Build Event」在temp(「Intermediate」)目錄中生成的嗎?如果是這樣,那麼項目B假定它是一個臨時文件並將其刪除。這是因爲項目B的清理髮現頭中的temp目錄,但不知道它的項目A.可能的解決方案的輸出:

  • 單獨從臨時文件夾中的輸出文件夾,並生成輸出頭夾。
  • 將輸出和臨時文件夾保持在一起,但將項目A的輸出/臨時文件夾與項目B的輸出/臨時文件夾分開。
  • 在自定義構建步驟而不是構建事件中生成標題,並將標題指定爲輸出的步驟。
0

我在遷移到VS 2015時遇到同樣的問題。解決方法是將「Configuration Property-> General-> Intermediate Directory」設置爲.. \\ $(ProjectName)\,以使Build.CppClean不會'從其他不相關的項目中清理以前的構建DLL。這對我有效。