Подтвердить что ты не робот

Как передать это общее свойство MSBuild с помощью TeamCity?

Я использую Runner TeamCity Visual Studio. Я хочу добавить параметр, недоступный из Visual Studio.

/Property:FileAlignment=4096

Я набрал это непосредственно на этапе сборки "Параметры командной строки". Журнал сборки показывает ошибку:

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

Я не понимаю, как предоставить это MSBuild из TeamCity и избавиться от этого предупреждения!

1. Какой параметр я должен использовать?

Есть 3 вида:

  • Параметры конфигурации
  • Свойства системы
  • Переменные среды.

Мне не нужна переменная среды или системы, потому что я не хочу, чтобы эта сборка зависела от чего-либо внешнего. Я собираюсь попробовать Config прямо сейчас, но тогда я не уверен, что правильно заполняю его.

2. Как я могу сказать, что этот параметр действительно используется?

В журнале построения, который, по-видимому, имеет только навигационные/складные xml-подобные уровни с их программой, не сказал параметры сборки.

4b9b3361

Ответ 1

Это было решено. Чтобы уточнить, Энтони рассказал, как решить проблему в командной строке, используя MSBuild. Его также можно решить на командной строке, используя devenv, за билет с Microsoft, синтаксис:

 devenv ..\..\mysolution.sln /Rebuild /Property:Config=Release;Platform=AnyCPU;Filealignment=512

Я хотел, однако, получить Teamcity "Visual Studio Build", чтобы принять этот параметр. Это было достигнуто следующим образом. В поле параметров командной строки я ввел:

/Property:FileAlignment=filealignment v:diag

Затем вкладка вывода для параметров сборки показывает:

User Defined Parameters
Name                    Value passed to build
system.filealignment    512
system.verbosity        diagnostic

Ответ 2

Вы должны использовать "Свойства системы". Не беспокойтесь о названии, просто как TeamCity называет его. Они являются регулярными свойствами. Вы можете добавить их в "Редактировать настройки конфигурации > 7. Сборка параметров".

Например, вы можете добавить системное свойство следующим образом:

Имя: system.FileAlignment

Тип: Системное свойство (система.)

Значение: 4096

Обратите внимание, что TeamCity будет настаивать на "системе". префикс. Это не имеет значения, потому что MSBuild script будет по-прежнему видеть его как $(FileAlignment).

Ответ 3

Документация TeamCity определяет параметры сборки как "удобный способ передачи общих или относящихся к среде параметров в сборку script" . Параметры конфигурации предоставляют возможность переопределить некоторые параметры в конфигурации сборки, унаследованные от шаблона. Они никогда не передаются в сборку. Параметры системы и среды предоставляются в вашей сборке script. Переменные среды фактически установлены в системе (я не могу найти для этого никакой документации). Системные параметры переданы движку script.

TeamCity автоматически предоставляет системные переменные фактической командной строке (похоже, что бегун Visual Studio работает msbuild.exe, а не devenv.exe). Я предполагаю, что TeamCity создает команду типа

cmd> msbuild.exe my-solution.sln /p:FileAlignment=4096

Я попробовал это в своей командной строке, чтобы убедиться, что он должен работать (я добавил флаг /v:diagnostic). Диагностическая многословность позволяет msbuild печатать все его свойства на консоли. Я проверил, что там был FileAlignment=4096.

Свойство /FileAlignment выглядит как специальное свойство, которое автоматически в любом файле .csproj. Поэтому вам должно быть хорошо идти. Вы можете проверить фактические параметры, которые были переданы в сборку, щелкнув любую сборку и просмотрев вкладку "Параметры сборки". Там раздел, который показывает "Фактические параметры для агента".

Ответ 4

(Это -754 символов для комментария, поэтому его нужно ввести в качестве сообщения)

Привет Антоний, Спасибо, что ответили! Да, msbuild в командной строке отлично работает и для меня, и файлы проекта могут хранить свойства FileAlignment. В нашем случае, при обсуждении с Microsoft, представляется необходимым, чтобы я определял также широкомасштабное выравнивание по ширине решения, то есть в аргументах команды, помимо исправления проектов (которые я уже сделал).

Никакой параметр, который я укажу в элементе графического интерфейса (/Строка/Параметры командной строки /), не появится на вкладке/Сборка параметров /. Конечно, некоторые не будут компилироваться вообще.

Также у меня есть еще более странное поведение, когда /Подробность: диагностические против /Подробность: минимальный вызывает более длинный журнал построения для минимального! Кажется, диагностика скрывает детали внутри специальной задачи, которая является частью 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, предположительно) древовидным форматом.

Если у вас есть другие идеи, я буду рад услышать их и поблагодарить за ваши изменения!:)