2008-12-01 42 views
6

我們正在尋找的是:在編譯相同的配置時,比如說Release | Win32,有沒有辦法只做postbuild步驟。就像,如果我在開發機器上執行所有構建後步驟,或者如果我在構建服務器上,則不要執行它們。或者是實現這一目標的唯一方法是實施新的配置?有沒有辦法有條件地運行Visual Studio Post構建步驟

評論者:感謝您的想法,我們不希望使用腳本,因爲他們將是一個更多的事情來維護,並且在這一點上MSBuild proj文件也將是很多頭痛。謝謝你嘗試。

+0

重複的http://stackoverflow.com/questions/150053/how-to-run-visual-studio-post-build-events-for-debug-build-only – 2010-03-18 15:25:14

回答

14

您可以在後期構建腳本中使用環境變量。事情是這樣的:

if NOT %ComputerName% == DEVMACHINENAME GOTO end 
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ngen "$(TargetPath)" 
:end 
1

如果你想破解成的MSBuild本身(。* PROJ文件基本上只是MSBuild的腳本),可以運行特定的機器步驟生成後:http://flimflan.com/blog/MachineSpecificTasksWithMSBuild.aspx

「這需要的事實優勢所有環境變量都立即作爲MSBuild腳本中的屬性提供;並且所有Windows機器(我最近開發的)都有COMPUTERNAME環境變量集。「

+1

我建議只是設置一個不同的環境變量,而不是將腳本硬編碼到特定的機器名稱 - 而是像BUILD_MACHINE = TRUE那樣設置一些env var,然後檢查它們。 – Tim 2008-12-01 15:31:23

+0

^使用蒂姆,好主意。 – Chris 2008-12-01 15:36:11

0

如果你不喜歡有一個單獨的構建配置(我認爲最有意義),你可以例如在你的構建服務器上定義一個環境變量,然後你可以在後期構建腳本中測試它。

0

有沒有可能實現您的文章建立步驟,它總是執行外部腳本,但邏輯有條件地執行所需的步驟是什麼?

相關問題