2010-03-23 90 views
2

我有一個應用程序應該幫助我的項目在構建前和事件後事件處理方面。我正在使用ndesk.options進行命令行參數分析。當我的項目路徑包含空格時,這給了我奇怪的結果。我認爲這是ndesk.options的錯,但我想我的應用程序是責怪。我把我的應用程序後,建事件,像這樣:Visual Studio中的空格和反斜槓構建事件

build.exe --in="$(ProjectDir)" --out="c:\out\" 

一個簡單的foreach在ARGS []顯示以下內容:

--in=c:\my project" --out=c:\out" 

發生了什麼事是,在每個參數的最後一個「被處理。就好像是逃過因此尾部的反斜槓被刪除,整個事情被視爲一個單獨的參數

現在,我想我是通過簡單地逃脫第一「爲好,像這樣聰明:。

build.exe --in=\"$(ProjectDir)" --out=\"c:\out\" 

在這種情況下所得到的ARGS []看起來像這樣:

--path="c:\my 
project" 
--out="c:\out" 

的斜槓在參數仍吞嚥和第一參數現在分裂。

將此參數[]傳遞給ndesk.options會產生錯誤的結果。

正確的命令行應該如何查看,以便正確的元素最終位於正確的args []槽中?另外,如何解析命令行參數,如有或沒有ndesk.options?任何建議都是值得歡迎的。

在此先感謝

回答

7

您是否嘗試逃避最後一個反斜槓?

build.exe --in="$(ProjectDir)\" --out="c:\out\\" 

這部作品大概只,只要ProjectDir\結束,這應該是given
這只是一個想法,但我沒有給它一個嘗試

編輯:
我發現了一個comment這表明離開了"

+0

這的確如同魅力一般。在這裏,我想我嘗試了每種組合。非常感謝 :) – 2010-03-23 22:40:38

1

我實際使用後「」解決這個相同的問題:

build.exe --in="$(ProjectDir)." --out="c:\out\." 

主要是因爲否則它可能看起來像你試圖逃跑的第二次試舉......這你沒有,你逃脫最終\(這是隱藏的)。 我還在postbuild命令中加入了REM,描述了爲什麼我這麼做。