关于dotfuscator和带空格的路径,我有一个非常讨厌的问题。我有一个.bat文件,通过post-build事件调用,语法如下:
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\
哪个方面会扰乱争论。所以,我试图用这样的引号括起路径:
"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 :(得分:0)
如果路径包含空格,那么传递给bat文件的参数应该已经用引号保护。所以你可能正在创建/ in:“”c:\ some path“”这将无效。首先尝试删除bat文件中dotfuscator行上的引号。
或者,尝试更改目录并返回,而不是尝试计算dotfuscator。您还需要将第3个参数从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
)