TeamCity говорит, что вместо "/property:" на этапе MSBuild следует использовать "Build Parameters". Что это значит?

У меня есть настройка сервера TeamCity для выполнения моих CI-сборок. Я строю и тестирую решение С# и запускаю некоторые пользовательские задачи MSBuild. Одна из этих задач - печать предупреждения в моем выпуске сборки...

Параметры командной строки MSBuild содержат параметры "/property:" или "/p:". Вместо этого используйте параметры сборки.

Я не понимаю, что это значит или как его удалить. Это не Google хорошо (с или без опечатки). Я запускал задачу из командной строки (с /verbosity:diagnostic), и она не отображается, поэтому я считаю это сообщение TeamCity.

Задача MSBuild

<Target Name="InstallDb">
  <MakeDir Directories="$(DbPath)" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath=&quot;$(DbPath)&quot;" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>

И соответствующая информация о шаге TeamCity

Версия MSBuild: 4.0
MSBuild ToolsVersion: 4.0
Запустить платформу: x64
Цели: InstallDb
Параметры командной строки:/property:DbPath=%env.DB_PATH%

Ответ 1

Вы должны добавить Build Parameters под Properties and environment переменными в конфигурации

`enter image description here

Итак, в параметрах командной строки в Build Step для MSBUild удалите любое свойство, указанное как /p:, и добавьте каждый из них в Build Parameters (снимок экрана выше) и укажите значения

Ответ 2

Все происходит за кулисами! Вам просто нужно следовать правильным соглашениям. В MSBuild script используется стандартная нотация переменной

$(DbPath)

И в TeamCity вы определяете переменную system или env

system.DbPath

TeamCity автоматически отправит все свои системные/env-переменные в вашу задачу MSBuild, удалив часть "system" или "env". И вам не нужно писать /property:DbPath=system.DbPath в своей задаче TeamCity.