0

我正在尝试创建一个自定义 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 失败。

关于如何保留引号的任何想法?

4

0 回答 0