2010-08-22 32 views
2

我試圖執行一個批處理文件,所以我創建了一個看起來像這樣一個生成後事件生成後向左右移動一堆文件:VS2008後生成事件的批處理文件

$(ProjectDir)CopyPlugins.bat $(ConfigurationName) 

的問題是,當Visual Studio中嘗試運行的情況下,我得到了錯誤的過程exited with code 9009

這個問題似乎是VS使整條生產線的報價,以便它運行的命令是:

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat Debug" 

當然,我打算做的是一個非常微妙的變化,改變了收盤引號的位置。

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat" Debug 

有沒有什麼辦法解決VS提供的這個相當煩人的「幫助」?

回答

6

創建另外兩個批處理文件,只用不同的參數執行第一個。

CopyPlugins-debug.bat Call CopyPlugins.bat debug

CopyPlugins-release.bat Call CopyPlugins.bat release

而在VS生成後事件 "$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"

+0

這看起來像我們能做的最好的... 這將是一個很好的IDE選項來關閉自動引用。我們是開發人員,我們足夠聰明(通常)來確定我們何時做,不需要它。 – kdmurray 2010-08-22 09:45:07

0

如果您正在嘗試進行復雜的構建後複製,可能需要查看MSBuild Community Tasks項目。它有一個包裝RoboCopy.exe的任務,這可能是一種更簡潔的方式來完成你的任務。

通常我會做一個單獨的「構建」項目,它是空的,除了執行構建前/構建步驟之外什麼都不做。它工作得很好。

+0

我一直希望不會僅僅爲了在構建之後複製幾個程序集。 – kdmurray 2010-08-22 06:03:51

0

我想你可能只需要路徑批處理腳本各地的報價,即你的生成後事件應該是:

"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName) 

這爲我工作所在的目錄中有空格的C#項目在它的道路上。

+0

是的,試過了。不幸的是它在這裏不起作用。我最終與VS2008試圖執行: '「」C:\ <批處理路徑> \ CopyPlugins.bat「調試」' 這只是沒有幫助任何人。 – kdmurray 2010-08-22 06:20:52

+0

您正在使用哪種項目類型? C#? C++? – 2010-08-22 06:22:19

+0

C# - 但它在構建事件,所以我猜它應該是大多數項目類型相同。 – kdmurray 2010-08-22 09:45:46

0

只需鍵入像這樣

d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)" 

這對我有效。不要使用CALL函數調用批處理文件!!!

將所有參數傳遞到主批處理文件並處理裏面的東西。 如果您有其他批次或一組批次被調用,請不要在後期構建事件中調用它們,只需調用主批處理文件中的其他批處理文件即可。