2014-10-16 2 views
0

공백이있는 점자 표시기 및 경로와 관련하여 매우 성가신 문제가 있습니다.dotfuscator in/out 경로의 공백

박쥐 파일은 다음과 같습니다
call "$(SolutionDir)..\Build\dotf.bat" $(SolutionDir) $(ConfigurationName) $(TargetPath) $(TargetDir). 

가 :

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 
) 

박쥐 파일이 인수를 접수에와 생성 나는 다음과 같은 구문을 사용하여 빌드 후 이벤트를 통해 호출되는 박쥐 파일이 다음과 같은 명령 :

"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\ 

물론 논쟁의 여지가 있습니다.

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

이것은 .bat 파일 인수 구문 분석을 수정하지만 dotfuscator 자체는 지금 비참하게 실패 : 그래서, 나는이 같은 quotationmarks과 경로를 묶으려고! Dotfuscator는 이제 "경로의 잘못된 문자"에 대해 불평합니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

0

경로에 공백이 있으면 bat 파일로 전달 된 매개 변수가 이미 따옴표로 보호되어 있어야합니다. 그래서 아마도/in : ""c : \ some path ""를 만들 것입니다. 먼저 박쥐 파일의 점 플로트 라인에있는 따옴표를 제거하십시오.

또는 디렉터리로 변경하고 점프 아웃을 시도하는 대신 다시 시도하십시오. targetpath에서 targetfile까지 세 번째 매개 변수도 변경해야합니다.

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