2014-10-16 24 views
0

我有一個非常惱人的問題,關於dotfuscator和帶空格的路徑。我有一個是通過生成後事件調用下面的語法.bat文件:dotfuscator進/出路徑中的空格

call "$(SolutionDir)..\Build\dotf.bat" $(SolutionDir) $(ConfigurationName) $(TargetPath) $(TargetDir). 

.bat文件看起來是這樣的:

SET DOTFPATH="%1..\Tools\DotfuscatorProEdition4.13.0\dotfuscator.exe" 
SET DEBUG=%2 
SET TARGETFILE=%3 
SET OUTPUT=%4 

if "%DEBUG%" == "Release" (
    %DOTFPATH% /q /in:"%TARGETFILE%" /out:"%OUTPUT%" 
) ELSE (
    echo DOTFUSCATOR: Skipped due to debugmode 
) 

.bat文件臨危參數,併產生一個像這樣的命令:

"C:\some\path\to\dotfuscator.exe" /q /in:C:\a\path\toproject\Mydll.dll /out:C:\a\path\toproject\ 

.bat文件在本地很好地工作。但在構建服務器上,解決方案和項目路徑具有空格,如下所示:

"C:\some\path\to\dotfuscator.exe" /q /in:C:\a\path\to project\Mydll.dll /out:C:\a\path\to project\ 

哪一個課程會混淆參數。所以,我試着用這樣的quotationmarks圍住路徑:

"C:\some\path\to\dotfuscator.exe" /q /in:"C:\a\path\to project\Mydll.dll" /out:"C:\a\path\to project\" 

此修復.bat文件和參數解析,但Dotfuscator的本身現在失敗草草收場! Dotfuscator現在抱怨「路徑中的非法字符」。我該如何解決?

回答

0

如果路徑中包含空格,則傳遞給bat文件的參數應該已經用引號保護。所以你可能在創建/ in:「」c:\ some path「」,這是行不通的。首先嚐試刪除bat文件中dotfuscator行上的引號。

或者,嘗試更改到目錄並返回而不是試圖解決dotfuscator。您需要將第三個參數也從目標路徑更改爲目標文件

SET DOTFPATH="%1..\Tools\DotfuscatorProEdition4.13.0\dotfuscator.exe" 
SET DEBUG=%2 
SET TARGETFILE=%3 
SET OUTPUT=%4 

if "%DEBUG%" == "Release" (
    pushd %OUTPUT% 
    %DOTFPATH% /q /in:%TARGETFILE% /out:. 
    popd 
) ELSE (
    echo DOTFUSCATOR: Skipped due to debugmode 
) 
+0

我確定我沒有使用雙引號標記,所以不能這樣做。但改變目錄聽起來像一個應該工作的解決方案!我不敢相信我自己並沒有想出這個簡單的解決方案!明天會試試看,謝謝。 – sundown 2014-10-19 11:17:10