0

引用符 ("") で囲む必要がある特定のプロパティで msbuild を呼び出すカスタム TFS 2015 ビルド タスクを作成しようとしています。

問題の説明 - tl.exec 呼び出しと実際のコマンド ライン実行の間のどこかで引用符が削除され、コマンドが中断されます。

問題を引き起こしている typescript コードのスニペットを次に示します。

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