VSTS-Task-Lib exec功能删除了引号

时间:2016-05-11 21:46:10

标签: javascript msbuild tfs2015 azure-pipelines-build-task azure-pipelines

我正在尝试创建一个自定义TFS 2015构建任务,该任务将使用需要引号(“”)的某些属性调用msbuild。

问题陈述 - 在tl.exec调用和实际命令行执行之间的某处删除引号,这会破坏命令。

以下是导致问题的打字稿代码片段:

let msbuildArgs = "AssemblyInfoUpdater.proj /p:SearchRoot=" + searchRoot
                  + ";IncludePattern=\"" + includePattern
                  + "\";Major=" + tl.getVariable("Major")
                  + ";Minor=" + tl.getVariable("Minor")
                  + ";Build=" + tl.getVariable("Build")
                  + ";Revision=" + tl.getVariable("Revision")
                  + ";BinariesRoot=" + tl.getVariable("Build.BinariesDirectory")
                  + ";TeamProject="+ tl.getVariable("System.TeamProject");

let result = tl.exec(`${tl.getVariable("MSBuild")}\\msbuild.exe`, msbuildArgs);

如您所见,IncludePattern需要用引号括起来(因此转义引号(\“))。

以下是运行时得到的结果:

##vso[task.debug]exec tool: C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe
##vso[task.debug]Arguments:
##vso[task.debug] AssemblyInfoUpdater.proj
##vso[task.debug] /p:SearchRoot=d:\Git\agent-tasks\Tests\AssemblyInfoUpdater\build\src;IncludePattern=**\assemblyinfo.*;Major=2;Minor=3;Build=100;Revision=50;BinariesRoot=d:\Git\agent-tasks\Tests\AssemblyInfoUpdater\build\bin;TeamProject=Synergis
[command]C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe AssemblyInfoUpdater.proj /p:SearchRoot=d:\Git\agent-tasks\Tests\AssemblyInfoUpdater\build\src;IncludePattern=**\assemblyinfo.*;Major=2;Minor=3;Build=100;Revision=50;BinariesRoot=d:\Git\agent-tasks\Tests\AssemblyInfoUpdater\build\bin;TeamProject=Synergis

由于参数无效,引号被删除,msbuild失败。

关于如何保留报价的任何想法?

0 个答案:

没有答案