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