我已經關注了Scott Hanselman的博客文章managing configuration with PreBuild Events,並讓它工作正常。Visual Studio中的多個預生成事件?
我現在想將我的配置分成幾個不同的文件,所以需要在構建之前再次執行該命令。問題是PreBuild事件文本全部作爲一個控制檯命令執行。我怎樣才能把它分成幾個命令?
我已經關注了Scott Hanselman的博客文章managing configuration with PreBuild Events,並讓它工作正常。Visual Studio中的多個預生成事件?
我現在想將我的配置分成幾個不同的文件,所以需要在構建之前再次執行該命令。問題是PreBuild事件文本全部作爲一個控制檯命令執行。我怎樣才能把它分成幾個命令?
原來,問題是斯科特的例子不包括call
命令在線的開始。只要您不想使用不同的參數多次執行.bat
文件,就可以。
此:
call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)connectionStrings.config.$(ConfigurationName)" "$(ProjectDir)connectionStrings.config"
call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)appSettings.config.$(ConfigurationName)" "$(ProjectDir)appSettings.config"
爲我工作得很好。
您應該能夠將這些命令放在一個單獨的行上,然後每個命令將按順序執行。另外,一個「騙子」的方式做同樣的事情如下:
他們分開行,但他們似乎正在執行爲一體。我已經考慮過bat文件的方法,但它似乎是一種解決方法,而不是一種解決方案。 – Kirschstein 2009-09-24 16:12:57
奇怪。我會提供其他建議(如添加分號作爲分隔符),但我只是在抓住吸管。抱歉! – MBillock 2009-09-24 17:11:29
我在Windows 7 64位上使用Visual Studio 2010。
我發現了一個解決方案,是更好的我喜歡的,我與&& ^
鏈接命令在一起,例如,編輯我.vcxproj xml文件像這樣:
<PreBuildEvent>
<Command>echo "hello 1" &&^
echo "hello 2" &&^
echo "hello 3"</Command>
<Message>Performaing pre-build actions ...</Message>
</PreBuildEvent>
我鏈式三個命令在一起。 '& &'告訴shell在以前的命令出錯時停止執行。
注意,在.xml文件中,不能直接使用&&
,所以'& amp; amp;'& amp;'必須使用。還要注意使用^
字符,這是cmd shell的續行字符(如BASH的\
char)。
每個新命令都必須從行首開始。使用這種方法,可以鏈接儘可能多的命令,但如果失敗,鏈中的其餘部分將不會執行。
這裏是我的實際用例,我正在執行一些環境檢查與Python腳本,隨後是複製我的預編譯的頭的調試文件到另一個子項目的目錄:
<PreBuildEvent>
<Command>C:\Python27\python.exe "$(SolutionDir)check_path.py" 32 &&^
copy "$(SolutionDir)h1ksim_lib\vc$(PlatformToolsetVersion).pdb" "$(IntDir)" /-Y > nul</Command>
<Message>Performaing pre-build actions ...</Message>
</PreBuildEvent>
的> nul
使用上覆制命令防止顯示生成窗口的任何輸出,所以我的隊友們不會得到嚇壞了,當它說0 file(s) copied.
參考共享個子項目之間的預編譯頭是在這裏:
Sharing precompiled headers between projects in Visual Studio
在VS2008中將多個CMD文件放在不同的行上不起作用。 VS只調用build上的第一個腳本。我在每行前添加了CALL,然後全部工作。 – 2010-10-13 21:10:31
爲什麼你要問這些'call'命令?請參閱[這裏](https://msdn.microsoft.com/en-us/library/ms165412.aspx)。 – Pascal 2017-02-04 20:46:40