Распознает ли Msbuild какие-либо конфигурации сборки, отличные от DEBUG | RELEASE

StackOverflow https://stackoverflow.com/questions/606660

  •  03-07-2019
  •  | 
  •  

Вопрос

Я создал конфигурацию с именем Test через Visual Studio, которая в настоящее время просто принимает все настройки ОТЛАДКИ, однако я использую условия компилятора для определения некоторых конкретных действий, если сборка выполняется как TEST | DEBUG | RELEASE.

Однако как я могу заставить свой скрипт MSBUILD определять конфигурацию ТЕСТА??

В настоящее время я строю

 <MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=$(Configuration);OutDir=$(BuildDir)\Builds\" />

Где @(SolutionsToBuild) - это мое решение.В Общие свойства проекта MSBuild в нем говорится, что $(Configuration) является общим свойством, но оно всегда отображается пустым?

Означает ли это, что он никогда не устанавливается, а просто зарезервирован для моего использования или что он может обнаруживать ТОЛЬКО DEBUG | RELEASE.Если да, то какой смысл разрешать создание различных конфигураций сборки?

Это было полезно?

Решение

Я мало что сделал с определением конфигурационного файла MSBUILD, но я выполнял сборки различных конфигураций, используя пакетный файл, подобный этому

msbuild /v:n /p:Configuration=Release "Capture.sln" 
msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln" 

Я определил Релизные загрузки конфигурация внутри Visual Studio.

Вот что я должен был сделать для этого (это Visual Studio 2005):

  • Откройте Инструменты:Опции меню, перейдите к Проекты и решения: Общие сведения выберите опцию и проверьте Показать расширенные конфигурации сборки.
  • Оттуда перейдите к Сборка: Конфигурация Меню менеджера
  • В появившемся диалоговом окне нажмите на Конфигурация активного решения извлеките и щелкните <New...> чтобы создать новую конфигурацию сборки.

Другие советы

Конечно, у вас может быть столько пользовательских конфигураций сборки, сколько вы хотите определить.Смотрите этот связанный вопрос, чтобы узнать, как может выглядеть настройка.

Как условно развернуть app.config на основе конфигурации сборки?

Обратите внимание, что когда "внутри Visual Studio", $ (Конфигурация) и $ (Платформа) всегда устанавливаются VS с помощью Configuration Manager в выпадающих списках вверху.Принимая во внимание, что если вы хотите установить эти значения с помощью msbuild из командной строки, вы должны передать значения явно (как в ответе @MarkBiek).

(Большинство шаблонов VS project имеют значение по умолчанию для конфигурации / платформы, так что вы можете использовать MSBuild командной строки без явного указания этих значений.Это хорошо, но из-за этого эти два полезных / распространенных свойства кажутся немного более волшебными / странными, чем они есть на самом деле.)

Обычно то, что я делаю для выпуска и отладки сборки из одного скрипта MSBuild, это:

<PropertyGroup Condition="'$(Configuration)'==''">
  <Configuration>Debug;Release</Configuration>
</PropertyGroup>

Затем добавьте это, но из секретного соуса MSBuild:

   <Target Name="configurations">
     <CreateItem Include="$(Configuration)">
       <Output TaskParameter="Include" ItemName="Configuration" />
     </CreateItem>
   </Target>

А затем для каждой цели сделайте что-то вроде этого:

  <Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target\%(Configuration.FileName)">
    <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" />
  </Target>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top