2008-11-05 78 views
1

我使用msbuild來構建C++項目,並且想要禁止「構建後事件」。我曾嘗試以下特性,但沒有成功:當使用msbuild時抑制C++的「構建後事件」

/property:PostBuildEvent= 
/property:VCPostBuildEventTool= 

也不會讓任何區別和後生成事件仍在執行。

有誰知道如何使用msbuild壓制這些(和潛在的其他)事件?

+0

這是一個C++特定的問題,因爲我發現做/ p:PostBuildEvent =禁止後編譯事件罰款的C#項目? – RobV 2010-09-08 13:25:06

回答

3

我只是想出瞭如何做到這一點。有兩個步驟:

首先,如果您未使用批處理文件啓動msbuild進程,請創建一個調用msbuild進程的批處理文件。然後在調用msbuild進程之前在批處理文件中添加一個變量。事情是這樣的:

set ISFULLBUILD=True 
msbuild TFSBuild.proj >> BuildOutput.txt 

然後,你需要修改後生成事件只能做一些事情,如果變量沒有設置,或有錯誤的值:

IF NOT '%ISFULLBUILD%'=='True' copy /y $(TargetFileName) "..\..\..\..\..\..\Binaries\$(ConfigurationName)\" 

在這種情況下 - 中TargetFileName(Whatever.dll)只會在從Visual Studio構建時纔會被複制。但是,當您使用新的批處理文件構建時,它不會在IF語句後執行命令。

0

您是否嘗試將生成事件設置爲空白以外的內容?如果你用一些多餘的東西來覆蓋它,比如「dir」或其他東西,它是否仍然執行原始的構建後步驟?

這不是最優雅的解決方案,但它可能工作。

+0

我試過這個沒有成功。 – Rob 2008-11-05 13:07:55

0

確認,它看起來像msbuild實際上調用vcbuild不那麼靈活,所以我認爲我卡住了。

0

如果您可以修改生成後事件,則可以使用環境變量(例如SKIP_POST_BUILD_EVENTS)來執行此操作。然後可以在調用msbuild之前設置該環境變量,並在執行任何代碼之前檢查變量是否存在於構建後事件中。

相關問題