dotfuscator输入/输出路径中的空格



关于dotfuscator和带空格的路径,我遇到了一个非常烦人的问题。我有一个.bat文件,它通过构建后事件调用,语法如下:

call "$(SolutionDir)..Builddotf.bat" $(SolutionDir) $(ConfigurationName) $(TargetPath) $(TargetDir). 

.bat文件如下所示:

SET DOTFPATH="%1..ToolsDotfuscatorProEdition4.13.0dotfuscator.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:somepathtodotfuscator.exe" /q /in:C:apathtoprojectMydll.dll /out:C:apathtoproject

.bat文件在本地运行良好。但在构建服务器上,解决方案和项目路径都有空白,如下所示:

"C:somepathtodotfuscator.exe" /q /in:C:apathto projectMydll.dll /out:C:apathto project

这当然会搅乱争论。所以,我试着用这样的引号把路径括起来:

"C:somepathtodotfuscator.exe" /q /in:"C:apathto projectMydll.dll" /out:"C:apathto project"

这修复了.bat文件和参数解析,但dotfuscator本身现在失败得很惨!Dotfuscator现在抱怨"路径中的非法字符"。我该怎么解决这个问题?

如果路径包含空格,那么传递给bat文件的参数应该已经用引号保护了。因此,您可能正在创建/in:"c:\some path",但这不起作用。首先尝试删除bat文件中dotfuscator行上的引号。

或者,尝试切换到目录并返回,而不是尝试计算dotfuscator。您还需要将第三个参数从targetpath更改为targetfile

SET DOTFPATH="%1..ToolsDotfuscatorProEdition4.13.0dotfuscator.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
)

相关内容

  • 没有找到相关文章

最新更新