У нас есть пакетный файл, который вызывает наш процесс сборки на основе MSBuild. Синтаксис:
build App Target [ Additional MSBuild Arguments ]
Внутренне, это делает это:
msbuild.exe %1.msbuild /t:%2 %3 %4 %5 %6 %7 %8 %9
Что приводит к вызовам MSBuild, которые выглядят так:
msbuild.exe <b>App</b>.msbuild /t:<b>Target</b>
Если какой-либо аргумент содержит знак равенства, =
, Powershell полностью удаляет его. Мой пакетный скрипт никогда его не видит. Этого не происходит со стандартной командной строкой cmd.exe
.
Например, если я позвоню
build App Target "/p:Property=Value"
вот что передается в MSBuild:
msbuild.exe App.msmbuild /t:Target /p:Property Value
Я ожидал этого:
msbuild.exe App.msbuild /t:Target "/p:Property=Value"
Я пробовал escape-символ Powershell, стандартный escape-символ командной строки и даже другие вещи, которые я придумал:
build App Target "/p:Property=Value"
build App Target '/p:Property=Value'
build App Target /p:Property^=Value
build App Target /p:Property`=Value
build App Target /p:Property==Value
Ничего из этого не работает. Что мне сделать, чтобы знак равенства не был удален или удален?