2014-10-16 23 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