Как передать это общее свойство MSBuild с помощью TeamCity?
Я использую TeamCity Visual Studio runner. Я хочу добавить параметр, который недоступен из Visual Studio.
/Property:FileAlignment=4096
Я ввел это непосредственно в параметры командной строки "шаг сборки"."Журнал сборки показывает ошибку:
параметры командной строки MSBuild содержат параметры" /property: "или" /p:". Вместо этого используйте параметры сборки.
Я не понимаю, как предоставить это MSBuild из TeamCity и избавиться от это предупреждение!
1. Какой параметр следует использовать?
есть 3 вида:
- параметры конфигурации
- свойства системы
- переменные среды.
Я не хочу, чтобы среда или системная переменная, потому что я не хочу, чтобы эта сборка зависела от чего-либо внешнего. Я собираюсь попробовать Config прямо сейчас, но тогда я не уверен, что заполняю его правильно.
2. Как я могу сказать этот параметр действительно используется?
журнал сборки, который, похоже, имеет только навигационные/складные xml-подобные уровни с их программой, не сказал параметры сборки.
4 ответов
вы должны использовать "свойства системы". Не беспокойтесь о названии, именно так его называет TeamCity. Они являются регулярными свойствами. Вы можете добавить их в " Изменить параметры конфигурации > 7. Параметры Сборки".
например, вы можете добавить системное свойство следующим образом:
название: системы.FileAlignment
тип: системное свойство (system.)
значение: 4096
обратите внимание, что TeamCity будет настаивать на "система." префикс. Это не имеет значения, потому что сценарий MSBuild по-прежнему будет видеть его как $(FileAlignment).
В TeamCity документация определяет параметры как "удобный способ передачи общих или специфичных для среды настроек в скрипт сборки". Параметры конфигурации позволяют переопределить некоторые параметры в конфигурации сборки, унаследованной от шаблона. они никогда не передаются в сборку. Параметры системы и среды предоставляются сценарию сборки. Переменные среды фактически установлены в системе (я не могу найти любая документация для этого). Параметры системы передано в движок скрипта.
TeamCity автоматически предоставляет системные переменные в фактическую командную строку (похоже, что Visual Studio runner работает msbuild.exe
, а не devenv.exe
). Я думаю, что TeamCity строит команду
cmd> msbuild.exe my-solution.sln /p:FileAlignment=4096
я попробовал это в своей командной строке, просто чтобы убедиться, что это должны работа (я добавил /v:diagnostic
флаг). Диагностическая многословность делает msbuild распечатает все его свойства на консоли. Я проверил это FileAlignment=4096
там.
это /FileAlignment
свойство кажется особое свойство это автоматически в любой . Так что ты можешь идти. Вы можете проверить фактические параметры, которые были переданы в сборку, нажав на любую сборку и просмотрев вкладку "параметры сборки". Существует раздел, который показывает "фактические параметры агента".
Это было решено. Чтобы уточнить, Энтони рассказал, как решить проблему в командной строке с помощью MSBuild. Его также можно решить в командной строке с помощью devenv, за билет с Microsoft, синтаксис:
devenv ..\..\mysolution.sln /Rebuild /Property:Config=Release;Platform=AnyCPU;Filealignment=512
однако я хотел, чтобы "Visual Studio Build" Teamcity принял этот параметр. Это было достигнуто следующим образом. В поле для параметров командной строки я ввел:
/Property:FileAlignment=filealignment v:diag
затем вкладка вывод для параметров сборки показывает:
User Defined Parameters
Name Value passed to build
system.filealignment 512
system.verbosity diagnostic
(Это -754 символа для комментария, поэтому его необходимо ввести как сообщение)
привет Энтони, Спасибо за ответ! Да, msbuild в командной строке отлично работает и для меня, и файлы проекта могут хранить свойства FileAlignment. В нашем случае, после обсуждения с Microsoft, кажется необходимым, чтобы я указал общесистемное решение aka build-wide alignment, т. е. в аргументах команды, в дополнение к фиксации проектов (что я уже сделал).
нет параметра, который я укажите на графическом интерфейсе пункт (/Build Step / параметры командной строки/) появится на вкладке /Build Parameters/. Конечно, некоторые не будут компилироваться вообще.
также у меня еще более странное поведение при использовании / многословие: диагностика против / многословие: минимальное вызывает более длинный журнал сборки для минимального! Похоже, диагностика скрывает детали внутри специальной задачи, которая является частью Teamcity, а не мной; [16: 24: 05]: переопределение цели "SatelliteDllsProjectOutputGroup" в проекте "C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets" с целью "SatelliteDllsProjectOutputGroup" из проекта "C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.WinFX.targets". Я борюсь с этим, потому что созданный Teamcity журнал выходных данных сборки так приятно иметь в качестве TreeView. Это работает с построением SLN, но использование любого файла bat не может создать файл журнала с красивым (xml, предположительно) древовидным форматом.
Если у вас есть дальнейшие идеи, я буду рад их услышать, и спасибо за ваши правки! :)