У меня есть csproj-файл, который я хочу скомпилировать на моем jenkins-сервере, который содержит событие postbuild:
<PostBuildEvent>
IF NOT DEFINED AAACOPYNEWONLY GOTO :EOF
IF "%25AAACOPYNEWONLY%25" == "yes" (
SET NEWOPT=/D
) ELSE (
SET NEWOPT=
RMDIR /S /Q "$(Outdir)\..\schema"
)
XCOPY /E /Y /I /Q %25NEWOPT%25 $(ProjectDir)..\schema "$(Outdir)\..\Schema"
</PostBuildEvent>
, когда я определяю AAACOPYNEWONLY
как переменную системной среды в windowsвсе работает нормально, и папка schema
копируется во все, на что ссылается ProjectDir
.
Но когда я предоставляю переменную непосредственно в моем вызове msbuild, папка не создается:
msbuild MyProject.csproj -t:ReBuild -p:AAACOPYNEWONLY=NO
Я также просканировал свой лог-файл, но нет ничего, что бы указывало на то, что xcopy даже запустился, что заставляет меня предположить, что условие IF NOT DEFINED AAACOPYNEWONLY
не соответствует.
Почему переменная неправильно передана всобытие, предоставляемое как arg для msbuild?
РЕДАКТИРОВАТЬ: я немного упростил мою пост-сборку, чтобы просто напечатать содержимое переменной:
<PostBuildEvent>
echo AAACOPYNEWONLY = "%25AAACOPYNEWONLY%25"
</PostBuildEvent>
Это просто печатает AAACOPYNEWONLY = ""
.