Msbuild что это за программа и нужна ли она: MSBuild что это за программа и нужна ли она?

Содержание

MSBuild что это за программа и нужна ли она?

Поговорим о такой программе как MSBuild, для чего она и можно ли ее удалить. MSBuild является штатным инструментом сборки проекта и используется в редакторе Visual Studio (или SharpDevelop), это такая программа в которой разработчики создают другие программы — пишут код и компилируют потом. Но при этом возможно создавать программы и без этой студии, достаточно чтобы был сам Microsoft Build Engine (MSBuild). Также данный компонент помогает собирать конечные проекты с поддержкой платформы .NET, при этом как версии 2.0 так и более современной.

Если вы думаете как удалить MSBuild, то я этого не советую делать, а то могут возникнуть разные глюки через некоторое время. Могу дать совет — переименуйте папку например в …MSBuild_, поработайте пару дней за компом, если нет глюков можете удалить

Особого смысла писать подробно о том что за программа MSBuild нет, так как вряд ли вам будет интересно, это для программистов. Ну что интересно? Окей, тогда немного напишу. Вот смотрите, MSBuild запускается из командной строки таким образом — файл проекта передается модулю MSBuild.exe с определенными аргументами. В результате при помощи аргументов указываются свойства, задаются обьекты и средства для ведения журнала. Также этот модуль будет полезен для отображения в командной строке ошибок, предупреждений, сообщений.

Разработка приложения в проекте MSBuild при использовании среды разработки Visual Studio 2005:

РЕКЛАМА

Итак, какой можем сделать вывод о программе MSBuild?

  • позволяет вести файл журнала с ошибками, предупреждениями и сообщениями при выполнении;
  • обработка в пакетном режиме задач, обьектов, на основе метаданных;
  • преобразование для дальнейшего анализа и эффективного построения проектов;
  • интеграция с Visual Studio, где MSBuild отвечает за проект, поэтому можно использовать любой проект, который был собран с использованием MSBuild, даже если он был создан при помощи другого инструмента;

Модуль MSBuild может работать с файлами, расширения у которых соответствует шаблону . *proj.

РЕКЛАМА

Скорее всего папку вы нашли в \Program Files, но вот какая штука, в эту папку, пользуясь тем что это системный компонент, может также поселится и вирус. Но если вдруг подозреваете, что это вирус… то тут лучше сразу проверить компьютер онлайн сканером, если будут вирусы, то он их найдет и после проверки вы их сможете удалить.

Как видите, интересного мало, это системная программа и папку ее как бы не желательно удалять, тем более что если она просто простаивает — то она никому не мешает и не нагружает процессор вообще никак.

Так вот, по поводу вирусов, если думаете что они поселились на компе — то нет вопросов, проверьте сперва инструментом AdwCleaner, а потом пройдитесь сканером Eset, я о нем писал тут (во второй половине статьи!).

На главную!

10.03.2016

Ctrl+C Ctrl+V — что это значит? (контрл+ц контрл+в)
Grizzly папка — что это?
Mb3install — что за папка?
PORT. IN на музыкальном центре — что это?
Windows10UpgraderApp — что это?
scoped_dir — что это за папка?
Windows10Upgrade — можно ли удалить?
im_temp — что за папка?

Использование MSBuild — MSBuild | Microsoft Learn


  • Статья

  • Чтение занимает 13 мин

MSBuild является платформой сборки для корпорации Майкрософт и Visual Studio. Это практическое руководство содержит вводную информацию о стандартных блоках MSBuild и описывает способы записи и отладки проектов MSBuild, а также управления ими. Здесь рассматриваются следующие вопросы:

  • создание файла проекта и работа с ним;

  • использование свойств сборки;

  • использование элементов сборки.

MSBuild можно запустить в Visual Studio или из командного окна. В этом пошаговом руководстве вы создадите файл проекта MSBuild с помощью Visual Studio. Вы отредактируете файл проекта в Visual Studio и с помощью командного окна выполните сборку проекта и просмотрите результаты.

Установка MSBuild

Если у вас есть Visual Studio, то MSBuild уже установлен. В Visual Studio 2019 и последующих средства сборки устанавливаются в папку установки Visual Studio. Для обычной установки по умолчанию в Windows 10 файл MSBuild.exe находится в папке установки MSBuild\Current\Bin.

Убедитесь, что в установщике выбраны средства MSBuild для используемых рабочих нагрузок, затем нажмите кнопку Установить.

Чтобы установить MSBuild в системе без Visual Studio, см. раздел Средства сборки для Visual Studio 2019 или установите пакет SDK для .NET.

Если у вас есть Visual Studio, то MSBuild уже установлен. В Visual Studio 2022 средства сборки устанавливаются в папку установки Visual Studio. Для обычной установки по умолчанию в Windows 10 файл MSBuild.exe находится в папке установки MSBuild\Current\Bin.

В установщике Visual Studio перейдите в раздел Отдельные компоненты и найдите флажок для MSBuild. Он выбирается автоматически при выборе любой из других рабочих нагрузок для установки.

Чтобы установить MSBuild в системе без Visual Studio, см. раздел «Средства сборки для Visual Studio 2022» на странице загрузок. Другой способ получить MSBuild — установить пакет SDK для .NET.

Создание проекта MSBuild

Система проектов Visual Studio основана на MSBuild. Это упрощает создание файла проекта с помощью Visual Studio. В этом разделе создается файл проекта Visual C#. Вместо него можно выбрать создание файла проекта Visual Basic. В контексте данного пошагового руководства различия между двумя файлами проекта незначительны.

Создание файла проекта

  1. Откройте Visual Studio и создайте проект.

    В поле поиска, введите winforms, затем выберите Create a new Windows Forms App (.NET Framework) (Создать новое приложение Windows Forms (.NET Framework)). В появившемся диалоговом окне выберите Создать.

    В поле Имя проекта введите BuildApp. Введите расположение решения, например D:\.

  2. Щелкните ОК или Создать, чтобы создать файл проекта.

Анализ файла проекта

В предыдущем разделе вы использовали Visual Studio для создания файла проекта Visual C#. Файл проекта представлен в обозревателе решений узлом проекта с именем BuildApp. Чтобы проанализировать файл проекта, можно использовать редактор кода Visual Studio.

Анализ файла проекта

  1. В обозревателе решений выберите узел проекта BuildApp.

  2. В браузере Свойства обратите внимание, что свойство Файл проекта имеет значение BuildApp. csproj. В именах всех файлов проектов указан суффикс proj. Если вы создали проект Visual Basic, файлу проекта будет задано имя BuildApp.vbproj.

  3. Еще раз щелкните правой кнопкой мыши узел проекта, а затем выберите Изменить BuildApp.csproj.

    Файл проекта откроется в редакторе кода.

Примечание

Для некоторых типов проектов, например C++, необходимо выгрузить проект, прежде чем можно будет открыть и изменить файл проекта. Чтобы выгрузить проект, щелкните правой кнопкой мыши файл проекта и выберите Выгрузить проект.

Целевые объекты и задачи

Файлы проекта представляют собой файлы в формате XML с корневым узлом Проект.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0"  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

Большинство проектов .NET имеют Sdk атрибут. Это так называемые проекты в стиле SDK.

<Project Sdk="Microsoft. NET.Sdk">

Существует множество вариантов пакетов SDK для .NET для специальных целей; Они описаны в пакетах SDK проекта .NET.

Создание приложения выполняется с помощью элементов Целевой объект и Задача.

  • Задача — это наименьшая единица работы или, другими словами, атом сборки. Задачи являются независимыми исполняемыми компонентами, которые могут иметь входные и выходные данные. Сейчас в проекте отсутствуют определенные задачи или задачи, на которые существуют ссылки. Процедура добавления задач в файл проекта описывается в следующих разделах. Дополнительные сведения см. в статье о задачах.

  • Целевой объект представляет собой именованную последовательность задач. Дополнительные сведения см. в статье о целевых объектах.

  • [это может быть именованная последовательность задач, но крайне важно то, что она представляет собой что-то, что должно быть создано или выполнено, поэтому ее необходимо определить с помощью подхода, ориентированного на цели]

Целевой объект по умолчанию не определен в файле проекта. Вместо этого он задан в импортированных проектах. Элемент Import указывает импортированные проекты. Например, в проекте C# целевой объект по умолчанию импортируется из файла Microsoft.CSharp.targets.

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Импортированные файлы вставляются в файл проекта везде, где на них указывает ссылка.

В проектах в стиле SDK вы не увидите этого элемента Import, так как атрибут SDK приводит к неявному импорту этого файла.

MSBuild отслеживает целевые объекты сборки и гарантирует, что каждый целевой объект будет построен не более одного раза.

Добавление целевого объекта и задачи

Добавьте целевой объект в файл проекта. Добавьте задачу в целевой объект, который выводит сообщение.

Добавление целевого объекта и задачи

  1. Добавьте следующие строки в файл проекта сразу после инструкции Import или после начала элемента Project.

    <Target Name="HelloWorld">
    </Target>
    

    Будет создан целевой объект с именем HelloWorld. Обратите внимание, что во время редактирования файла проекта доступна поддержка IntelliSense.

  2. Добавьте строки в целевой объект HelloWorld, чтобы в результате раздел выглядел следующим образом:

    <Target Name="HelloWorld">
      <Message Text="Hello"></Message>  <Message Text="World"></Message>
    </Target>
    
  3. Сохраните файл проекта.

Задача Message является одной из многих задач, которые поставляемы с MSBuild. Полный список доступных задач и сведения об их использовании см. в статье Справочные сведения о задачах MSBuild.

Задача Message принимает строковое значение атрибута Text в качестве входных данных и отображает его на выходном устройстве (или записывает его в один или несколько журналов, если применимо). Целевой объект HelloWorld выполняет задачу Message дважды: сначала для отображения Hello, а затем для отображения World.

Создание целевого объекта

Если вы попытаетесь выполнить сборку этого проекта из Visual Studio, определенный вами целевой объект не будет создан. Это связано с тем, что Visual Studio выбирает целевой объект по умолчанию, а это по-прежнему тот объект, который находится в импортированном файле .targets.

Запустите MSBuild из командной строки разработчика для Visual Studio, чтобы создать целевой объект HelloWorld, определенный выше. Используйте параметр -target или -t для выбора целевого объекта.

Примечание

В следующих разделах мы будем называть командную строку разработчикакомандным окном.

Создание целевого объекта

  1. Откройте командное окно.

    В поле поиска на панели задач начните вводить имя средства, например dev или developer command prompt. Откроется список установленных приложений, которые соответствуют вашему шаблону поиска.

    Если вам нужно найти средство вручную, найдите файл LaunchDevCmd.bat в папке <папка установки Visual Studio>\Common7\Tools.

  2. В командном окне перейдите в папку, содержащую файл проекта. В данном случае это D:\BuildApp\BuildApp.

  3. Выполните команду msbuild с параметром -t:HelloWorld. Будет выбран и создан целевой объект HelloWorld:

    msbuild buildapp.csproj -t:HelloWorld
    
  4. Изучите выходные данные в окне командной строки. Вы должны увидеть две строки — Hello и World:

    Hello
    World
    

Примечание

Если вместо них вы видите The target "HelloWorld" does not exist in the project, возможно, вы забыли сохранить файл проекта в редакторе кода. Сохраните файл и повторите попытку.

Переключаясь между редактором кода и командной строкой, можно изменять файл проекта и сразу же видеть результаты.

Свойства сборки

Свойства сборки являются парами «имя — значение», управляющими сборкой. В верхней части файла проекта уже определено несколько свойств сборки:

<PropertyGroup>
. ..
  <ProductVersion>10.0.11107</ProductVersion>
  <SchemaVersion>2.0</SchemaVersion>
  <ProjectGuid>{30E3C9D5-FD86-4691-A331-80EA5BA7E571}</ProjectGuid>
  <OutputType>WinExe</OutputType>
...
</PropertyGroup>

Все свойства являются дочерними элементами по отношению к элементам PropertyGroup. Имя свойства — это имя дочернего элемента, а значение свойства — это текстовый элемент дочернего элемента. Например, примененная к объекту директива

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

определяет свойство с именем TargetFrameworkVersion, задавая ему строковое значение «v4.5».

Свойства сборки можно переопределить в любое время. If

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

появляется далее в файле проекта или в файле, позже импортированном в файл проекта, свойство TargetFrameworkVersion принимает новое значение v3.5.

Анализ значения свойства

Чтобы получить значение свойства, используйте следующий синтаксис, где PropertyName — имя свойства:

$(PropertyName)

С помощью этого синтаксиса проанализируйте некоторые свойства в файле проекта.

Анализ значения свойства

  1. В редакторе кода замените целевой объект HelloWorld следующим кодом:

    <Target Name="HelloWorld">
      <Message Text="Configuration is $(Configuration)" />
      <Message Text="MSBuildToolsPath is $(MSBuildToolsPath)" />
    </Target>
    
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld
    
  4. Проанализируйте результат. Вы должны увидеть следующие две строки (ваши выходные данные могут отличаться):

    Configuration is Debug
    MSBuildToolsPath is C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
    
    Configuration is Debug
    MSBuildToolsPath is C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\16.0\Bin
    

Условные свойства

Многие свойства, например Configuration, определяются условно, то есть в элементе свойства отображается атрибут Condition. Условные свойства определяются или переопределяются только в том случае, если условие принимает значение true. Обратите внимание, что неопределенные свойства получают значение по умолчанию — пустую строку. Например, примененная к объекту директива

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

означает: «Если свойство Configuration еще не определено, определите его и присвойте ему значение Debug».

Атрибут Condition может быть почти у всех элементов MSBuild. Дополнительные сведения об использовании атрибута Condition см. в статье об условиях.

Зарезервированные свойства

MSBuild резервирует некоторые имена свойств для хранения сведений о файле проекта и двоичных файлах MSBuild. Примером зарезервированного свойства является MSBuildToolsPath. Зарезервированные свойства указываются с символом $, как и любое другое свойство. Дополнительные сведения см. в разделе Практическое руководство. Использование ссылки на имя или расположение файла проекта и Зарезервированные и стандартные свойства MSBuild.

Переменные среды

Ссылаться на переменные среды в файлах проектов можно так же, как на свойства сборки. Например, чтобы использовать переменную среды PATH в файле проекта, примените $(Path). Если проект содержит определение свойства с тем же именем, что и у переменной среды, свойство в проекте переопределит значение переменной среды. Дополнительные сведения см. в разделе Практическое руководство. Использование переменных среды в построении.

Задание свойств из командной строки

Свойства можно определить в командной строке с помощью параметра -property или -p. Значения свойств, полученные из командной строки, переопределяют значения свойств, заданные в файле проекта и переменных среды.

Настройка значения свойства из командной строки

  1. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
    
  2. Проанализируйте результат. Вы должны увидеть следующую строку:

    Configuration is Release. 
    

MSBuild создает свойство Configuration и присваивает ему значение Release.

Специальные символы

Некоторые символы имеют особое значение в файлах проекта MSBuild. К ним относятся точка с запятой (;) и звездочка (*). Чтобы использовать эти специальные знаки в качестве литералов в файле проекта, их необходимо задать с помощью синтаксиса %<xx>, где <xx> представляет шестнадцатеричное значение ASCII знака.

Измените задачу Message, чтобы отображать значение свойства Configuration со специальными символами для удобства чтения.

Использование специальных символов в задаче Message

  1. В редакторе кода замените обе задачи Message следующей строкой:

    <Message Text="%24(Configuration) is %22$(Configuration)%22" />
    
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld
    
  4. Проанализируйте результат. Вы должны увидеть следующую строку:

    $(Configuration) is "Debug"
    

Дополнительные сведения см. в статье Специальные символы в MSBuild.

Элементы сборки

Элемент — это часть данных, обычно имя файла, которая используется в качестве входных данных для системы сборки. Например, коллекцию элементов, представляющую исходные файлы, можно передать в задачу Compile, чтобы скомпилировать их в сборку.

Все элементы являются дочерними элементами по отношению к элементам ItemGroup. Именем элемента является имя дочернего элемента, а значением — значение атрибута Include дочернего элемента. Значения элементов с одинаковым именем собираются в типы элементов с таким именем. Например, примененная к объекту директива

<ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>

определяет группу элементов, содержащую два элемента. Тип элемента Compile имеет два значения: Program. cs и Properties\AssemblyInfo.cs.

Следующий код создает один и тот же тип элемента, объявив оба файла в одном Include атрибуте, разделенном точкой с запятой.

<ItemGroup>
    <Compile Include="Program.cs;Properties\AssemblyInfo.cs" />
</ItemGroup>

Дополнительные сведения см. в разделе Элементы.

Примечание

Пути к файлам задаются относительно папки, содержащей файл проекта MSBuild, даже если файл проекта является импортированным. Существует несколько исключений, например при использовании элементов Import и UsingTask.

Анализ значений типа элемента

Чтобы получить значения типа элемента, используйте следующий синтаксис, где ItemType имя типа элемента:

@(ItemType)

Используйте этот синтаксис для проверки Compile типа элемента в файле проекта.

Анализ значений типа элемента

  1. В редакторе кода замените целевую задачу HelloWorld следующим кодом:

    <Target Name="HelloWorld">
      <Message Text="Compile item type contains @(Compile)" />
    </Target>
    
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld
    
  4. Проанализируйте результат. Вы должны увидеть следующую строку:

    Compile item type contains Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs
    

По умолчанию значения типа элемента разделены точкой с запятой.

Чтобы изменить разделитель типа элемента, используйте следующий синтаксис, где ItemType — это тип элемента, а Separator — это строка из одного или нескольких разделительных символов:

@(ItemType, Separator)

Измените задачу Message для использования символов возврата каретки и перевода строки (%0A%0D) для отображения элементов Compile по одному в строке.

Отображение значений типов элементов по одному в строке

  1. В редакторе кода замените задачу Message следующей строкой:

    <Message Text="Compile item type contains @(Compile, '%0A%0D')" />
    
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld
    
  4. Проанализируйте результат. Должны отобразиться следующие строки:

    Compile item type contains Form1.cs
    Form1.Designer.cs
    Program.cs
    Properties\AssemblyInfo.cs
    Properties\Resources.Designer.cs
    Properties\Settings.Designer.cs
    

Атрибуты Include, Exclude и подстановочные знаки

Можно использовать подстановочные знаки «*», «**» и «?» с атрибутом Include, чтобы добавить элементы к типу элемента. Например, примененная к объекту директива

<Photos Include="images\*.jpeg" />

добавляет все файлы с расширением файла .jpeg в папке изображений к типу элемента Photos, тогда как

<Photos Include="images\**\*.jpeg" />

добавляет все файлы с расширением файла .jpeg в папке изображений и всех ее вложенных папках к типу элемента Photos. Дополнительные примеры см. в статье Практическое руководство. Выбор файлов для сборки.

Обратите внимание, что, так как элементы объявлены, они добавляются к типу элемента. Например, примененная к объекту директива

<Photos Include="images\*.jpeg" />
<Photos Include="images\*.gif" />

создает тип элемента Photo, содержащий все файлы в папке изображений с расширением .jpeg или .gif. Это эквивалентно следующей строке:

<Photos Include="images\*.jpeg;images\*.gif" />

С помощью атрибута Exclude можно исключить элемент из типа элемента. Например, примененная к объекту директива

<Compile Include="*.cs" Exclude="*Designer*">

добавляет все файлы с расширением .cs в тип элемента Compile, за исключением файлов, имена которых содержат строку Designer. Дополнительные примеры см. в статье Практическое руководство. Исключение файлов из сборки.

Атрибут Exclude применяется только к элементам, добавленным с помощью атрибута Include в элемент, содержащий их оба. Например, примененная к объекту директива

<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">

не исключит файл Form1.cs, добавленный в предыдущий элемент.

Включение и исключение элементов

  1. В редакторе кода замените задачу Message следующей строкой:

    <Message Text="XFiles item type contains @(XFiles)" />
    
  2. Добавьте эту группу элементов сразу после элемента Import:

    <ItemGroup>
       <XFiles Include="*.cs;properties/*.resx" Exclude="*Designer*" />
    </ItemGroup>
    
  3. Сохраните файл проекта.

  4. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld
    
  5. Проанализируйте результат. Вы должны увидеть следующую строку:

    XFiles item type contains Form1.cs;Program.cs;Properties/Resources.resx
    

Метаданные элементов

Помимо сведений, собранных из атрибутов Include и Exclude, элементы могут содержать метаданные. Эти метаданные могут использоваться задачами, требующими дополнительных сведений об элементах, а не просто их значений.

Для объявления элементов в файле проекта создается элемент с именем метаданных, являющийся дочерним по отношению к элементу. Элемент может содержать нуль или более значений метаданных. Например, следующий элемент CSFile содержит метаданные Culture со значением Fr:

<ItemGroup>
    <CSFile Include="main.cs">
        <Culture>Fr</Culture>
    </CSFile>
</ItemGroup>

Чтобы получить значение метаданных типа элемента, используйте следующий синтаксис, где ItemType имя типа элемента и MetaDataName — имя метаданных:

%(ItemType.MetaDataName)

Анализ метаданных элементов

  1. В редакторе кода замените задачу Message следующей строкой:

    <Message Text="Compile.DependentUpon: %(Compile.DependentUpon)" />
    
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

    msbuild buildapp. csproj -t:HelloWorld
    
  4. Проанализируйте результат. Должны отобразиться следующие строки:

    Compile.DependentUpon:
    Compile.DependentUpon: Form1.cs
    Compile.DependentUpon: Resources.resx
    Compile.DependentUpon: Settings.settings
    

Обратите внимание, что фраза Compile.DependentUpon появляется несколько раз. Использование метаданных с таким синтаксисом в целевом объекте приводит к пакетной обработке. Пакетная обработка означает, что задачи в целевом объекте выполняются один раз для каждого уникального значения метаданных. Это является эквивалентом скрипта MSBuild общей конструкции программирования for loop. Дополнительные сведения см. в статье Пакетная обработка.

Стандартные метаданные

Всякий раз, когда элемент добавляется в список элементов, ему назначаются некоторые стандартные метаданные. Например %(Filename) возвращает имя файла любого элемента. Полный список стандартных метаданных см. в статье Общеизвестные метаданные элементов MSBuild.

Анализ стандартных метаданных

  1. В редакторе кода замените задачу Message следующей строкой:

    <Message Text="Compile Filename: %(Compile.Filename)" />
    
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld
    
  4. Проанализируйте результат. Должны отобразиться следующие строки:

    Compile Filename: Form1
    Compile Filename: Form1.Designer
    Compile Filename: Program
    Compile Filename: AssemblyInfo
    Compile Filename: Resources.Designer
    Compile Filename: Settings.Designer
    

Сравнивая два приведенных выше примера, можно увидеть, что, хотя не у каждого элемента в типе элемента Compile имеются метаданные DependentUpon, у всех элементов есть стандартные метаданные Filename.

Преобразования метаданных

Списки элементов могут быть преобразованы в новые списки элементов. Чтобы преобразовать список элементов, используйте следующий синтаксис, где <ItemType> — это имя типа элементов, а <MetadataName> — имя метаданных:

@(ItemType -> '%(MetadataName)')

Например, список элементов исходных файлов можно преобразовать в коллекцию объектных файлов с помощью выражения @(SourceFiles -> '%(Filename). obj'). Дополнительные сведения см. в статье Преобразования.

Преобразование элементов с помощью метаданных

  1. В редакторе кода замените задачу Message следующей строкой:

    <Message Text="Backup files: @(Compile->'%(filename).bak')" />
    
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

    msbuild buildapp.csproj -t:HelloWorld
    
  4. Проанализируйте результат. Вы должны увидеть следующую строку:

    Backup files: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo.bak;Resources.Designer.bak;Settings.Designer.bak
    

Обратите внимание, что выраженные в этом синтаксисе метаданные не приводят к пакетной обработке.

Следующие шаги

Чтобы узнать, как создать простой файл проекта по одному шагу в Windows, попробуйте пошаговое руководство. Создание файла проекта MSBuild с нуля.

Если вы используете в основном пакет SDK для . NET, вы можете продолжить чтение в справочнике по MSBuild для проектов пакета SDK для .NET.

См. также

  • Общие сведения о MSBuild
  • Справочные сведения о MSBuild

Использовать MSBuild — MSBuild | Microsoft Learn

  • Статья
  • 15 минут на чтение

MSBuild — это платформа сборки для Microsoft и Visual Studio. Это пошаговое руководство знакомит вас со строительными блоками MSBuild и показывает, как писать, управлять и отлаживать проекты MSBuild. Вы узнаете о:

  • Создание файла проекта и управление им.

  • Как использовать свойства сборки.

  • Как использовать предметы сборки.

Вы можете запустить MSBuild из Visual Studio или из командного окна . В этом пошаговом руководстве вы создадите файл проекта MSBuild с помощью Visual Studio. Вы редактируете файл проекта в Visual Studio и используете командное окно для построения проекта и изучения результатов.

Установите MSBuild

Если у вас есть Visual Studio, у вас уже установлена ​​MSBuild. В Visual Studio 2019 и более поздних версиях он устанавливается в папку установки Visual Studio. Для типичной установки по умолчанию в Windows 10 MSBuild.exe находится в папке установки в MSBuild\Current\Bin .

Убедитесь, что в программе установки выбраны инструменты MSBuild для используемых вами рабочих нагрузок, и выберите Установить .

Чтобы установить MSBuild в системе, в которой нет Visual Studio, перейдите к разделу Инструменты сборки для Visual Studio 2019.или установите пакет SDK для .NET.

Если у вас есть Visual Studio, у вас уже установлен MSBuild. В Visual Studio 2022 он устанавливается в папку установки Visual Studio. Для типичной установки по умолчанию в Windows 10 MSBuild.exe находится в папке установки в MSBuild\Current\Bin .

В установщике Visual Studio перейдите к Отдельные компоненты и установите флажок MSBuild . Он выбирается автоматически, когда вы выбираете любую другую рабочую нагрузку для установки.

Чтобы установить MSBuild в системе, в которой нет Visual Studio, перейдите к разделу Инструменты сборки для Visual Studio 2022 на странице загрузок. Другой способ получить MSBuild — установить пакет SDK для .NET.

Создать проект MSBuild

Система проектов Visual Studio основана на MSBuild. Это упрощает создание нового файла проекта с помощью Visual Studio. В этом разделе вы создадите файл проекта Visual C#. Вместо этого вы можете создать файл проекта Visual Basic. В контексте этого пошагового руководства разница между двумя файлами проекта незначительна.

Чтобы создать файл проекта

  1. Откройте Visual Studio и создайте проект:

    В поле поиска введите winforms , затем выберите Создать новое приложение Windows Forms (. NET Framework) . В появившемся диалоговом окне выберите Create .

    В поле Имя проекта введите BuildApp . Введите Location для решения, например, D:\ .

  2. Щелкните OK или Создать , чтобы создать файл проекта.

Изучите файл проекта

В предыдущем разделе вы использовали Visual Studio для создания файла проекта Visual C#. Файл проекта представлен в Solution Explorer узлом проекта с именем BuildApp. Вы можете использовать редактор кода Visual Studio для проверки файла проекта.

Для проверки файла проекта

  1. В Solution Explorer , щелкните узел проекта BuildApp .

  2. Обратите внимание, что в браузере Properties свойство Project File имеет значение BuildApp. csproj . Все файлы проекта имеют суффикс proj . Если вы создали проект Visual Basic, имя файла проекта будет BuildApp.vbproj .

  3. Еще раз щелкните правой кнопкой мыши узел проекта, затем щелкните Изменить BuildApp.csproj .

    Файл проекта появляется в редакторе кода.

Примечание

Для некоторых типов проектов, таких как C++, необходимо выгрузить проект (щелкните правой кнопкой мыши файл проекта и выберите Выгрузить проект ), прежде чем вы сможете открыть и отредактировать файл проекта.

Цели и задачи

Файлы проекта представляют собой файлы в формате XML с корневым узлом Project.

 

 

Большинство проектов .NET имеют атрибут Sdk . Они называются проектами в стиле SDK.

 <Проект Sdk="Microsoft. NET.Sdk">
 

Существует множество вариантов .NET SDK для специальных целей; они описаны в пакетах SDK для .NET Project.

Работа по созданию приложения выполняется с помощью элементов Target и Task.

  • Задача — это наименьшая единица работы, другими словами, «атом» сборки. Задачи — это независимые исполняемые компоненты, которые могут иметь входы и выходы. В настоящее время в файле проекта нет задач, на которые есть ссылки или которые определены. Вы добавляете задачи в файл проекта в разделах ниже. Дополнительные сведения см. в разделе Задачи.

  • Цель — это именованная последовательность задач. Дополнительные сведения см. в разделе Цели.

  • [это может быть именованная последовательность задач, но важно то, что она представляет собой что-то, что нужно построить или сделать, поэтому она должна быть определена целенаправленно]

Цель по умолчанию не определена в файле проекта. Вместо этого он указывается в импортированных проектах. Элемент Import определяет импортированные проекты. Например, в проекте C# цель по умолчанию импортируется из файла 9.0039 Microsoft.CSharp.цели .

 
 

Импортированные файлы эффективно вставляются в файл проекта везде, где на них есть ссылки.

В проектах в стиле SDK этот элемент импорта не отображается, поскольку атрибут SDK вызывает неявный импорт этого файла.

MSBuild отслеживает цели сборки и гарантирует, что каждая цель будет собрана не более одного раза.

Добавить цель и задачу

Добавьте цель в файл проекта. Добавьте задачу к цели, которая распечатывает сообщение.

Чтобы добавить цель и задачу

  1. Добавьте эти строки в файл проекта сразу после оператора Import или открывающего элемента Project.

     <Имя цели="HelloWorld">
    
     

    Это создает цель с именем HelloWorld. Обратите внимание, что у вас есть поддержка IntelliSense при редактировании файла проекта.

  2. Добавьте строки в цель HelloWorld, чтобы результирующий раздел выглядел так:

     <Имя цели="HelloWorld">
      <Текст сообщения="Привет"> <Текст сообщения="Мир">
    
     
  3. Сохраните файл проекта.

Задача Message — одна из многих задач, поставляемых с MSBuild. Полный список доступных задач и информацию об использовании см. в разделе Справочник по задачам.

Задача Message принимает строковое значение атрибута Text в качестве входных данных и отображает его на устройстве вывода (или записывает его в один или несколько журналов, если применимо). Цель HelloWorld выполняет задачу Message дважды: сначала для отображения «Hello», а затем для отображения «World».

Создайте цель

Если вы попытаетесь построить этот проект из Visual Studio, он не создаст цель, которую вы определили. Это связано с тем, что Visual Studio выбирает цель по умолчанию, которая по-прежнему находится в импортированном файле . targets .

Запустите MSBuild из командной строки разработчика для Visual Studio, чтобы создать цель HelloWorld, определенную выше. Используйте ключ командной строки -target или -t, чтобы выбрать цель.

Примечание

Мы будем ссылаться на Командная строка разработчика как Командное окно в следующих разделах.

Чтобы построить цель:

  1. Откройте окно команд .

    В поле поиска на панели задач начните вводить название инструмента, например dev или командная строка разработчика . Откроется список установленных приложений, соответствующих вашему шаблону поиска.

    Если нужно найти вручную, файл LaunchDevCmd.bat в папке <папка установки Visual Studio>\Common7\Tools .

  2. В командном окне перейдите к папке, содержащей файл проекта, в данном случае D:\BuildApp\BuildApp .

  3. Запустите msbuild с параметром -t:HelloWorld . Это выбирает и создает цель HelloWorld:

    .

     msbuild buildapp.csproj -t:HelloWorld
     
  4. Просмотр вывода в окне команд . Вы должны увидеть две строки «Hello» и «World»:

    .

     Привет
    Мир
     

Примечание

Если вместо этого вы видите Цель "HelloWorld" не существует в проекте , то вы, вероятно, забыли сохранить файл проекта в редакторе кода. Сохраните файл и повторите попытку.

Чередуя редактор кода и командное окно, вы можете изменить файл проекта и быстро увидеть результаты.

Свойства сборки

Свойства сборки — это пары «имя-значение», которые управляют сборкой. Несколько свойств сборки уже определены в верхней части файла проекта:

 <Группа свойств>
...
  10.0.11107
  2.0
  {30E3C9D5-FD86-4691-A331-80EA5BA7E571}
  WinExe
. ..

 

Все свойства являются дочерними элементами элементов PropertyGroup. Имя свойства — это имя дочернего элемента, а значение свойства — текстовый элемент дочернего элемента. Например,

 v4.5
 

определяет свойство с именем TargetFrameworkVersion, присваивая ему строковое значение «v4.5».

Свойства сборки могут быть переопределены в любое время. Если

 v3.5
 

появляется позже в файле проекта или в файле, импортированном позже в файле проекта, тогда TargetFrameworkVersion принимает новое значение «v3.5».

Проверить значение свойства

Чтобы получить значение свойства, используйте следующий синтаксис, где PropertyName — имя свойства:

 $(PropertyName)
 

Используйте этот синтаксис для проверки некоторых свойств в файле проекта.

Чтобы проверить значение свойства

  1. В редакторе кода замените цель HelloWorld следующим кодом:

     <Имя цели="HelloWorld">
      
      
    
     
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

     msbuild buildapp.csproj -t:HelloWorld
     
  4. Проверьте вывод. Вы должны увидеть эти две строки (ваш вывод может отличаться):

     Конфигурация отладочная
    MSBuildToolsPath — это C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64.
     
     Конфигурация отладочная
    MSBuildToolsPath — это C:\Program Files (x86)\Microsoft Visual Studio\2019.\MSBuild\16.0\Бин
     

Условные свойства

Многие свойства, такие как Конфигурация , определяются условно, то есть атрибут Условие появляется в элементе свойства. Условные свойства определяются или переопределяются только в том случае, если условие оценивается как «истина». Обратите внимание, что неопределенным свойствам по умолчанию присваивается пустая строка. Например,

 Отладка
 

означает «Если свойство конфигурации еще не определено, определите его и присвойте ему значение «Отладка»».

Почти все элементы MSBuild могут иметь атрибут Condition. Дополнительные сведения об использовании атрибута Condition см. в разделе Условия.

Зарезервированные свойства

MSBuild резервирует имена некоторых свойств для хранения информации о файле проекта и двоичных файлах MSBuild. MSBuildToolsPath — это пример зарезервированного свойства. На зарезервированные свойства ссылаются с помощью нотации $, как и на любое другое свойство. Дополнительные сведения см. в разделе Практическое руководство. Ссылка на имя или расположение файла проекта, а также зарезервированные и общеизвестные свойства MSBuild.

Переменные среды

Вы можете ссылаться на переменные среды в файлах проекта так же, как на свойства сборки. Например, чтобы использовать переменную среды PATH в файле проекта, используйте $(Path). Если проект содержит определение свойства с тем же именем, что и переменная среды, свойство в проекте переопределяет значение переменной среды. Дополнительные сведения см. в разделе Практическое руководство. Использование переменных среды в сборке.

Установка свойств из командной строки

Свойства могут быть определены в командной строке с помощью переключателя командной строки -property или -p. Значения свойств, полученные из командной строки, переопределяют значения свойств, заданные в файле проекта и переменных среды.

Чтобы установить значение свойства из командной строки:

  1. В командном окне введите и выполните эту строку:

     msbuild buildapp.csproj -t:HelloWorld -p:Configuration=Release
     
  2. Проверьте вывод. Вы должны увидеть эту строку:

     Конфигурация является выпуском.
     

MSBuild создает свойство Configuration и присваивает ему значение «Release».

Специальные символы

Некоторые символы имеют особое значение в файлах проектов MSBuild. Примеры этих символов включают точку с запятой (;) и звездочки (*). Чтобы использовать эти специальные символы в качестве литералов в файле проекта, их необходимо указать с помощью синтаксиса %, где представляет шестнадцатеричное значение символа ASCII.

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

Чтобы использовать специальные символы в задаче «Сообщение»:

  1. В редакторе кода замените обе задачи «Сообщение» этой строкой:

     <Текст сообщения="%24(Конфигурация) равен %22$(Конфигурация)%22" />
     
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

     msbuild buildapp.csproj -t:HelloWorld
     
  4. Проверьте вывод. Вы должны увидеть эту строку:

     $(Конфигурация) — "Отладка"
     

Дополнительные сведения см. в разделе Специальные символы MSBuild.

Элементы сборки

Элемент — это часть информации, обычно имя файла, которая используется в качестве входных данных для системы сборки. Например, набор элементов, представляющих исходные файлы, может быть передан задаче Compile для их компиляции в сборку.

Все элементы являются дочерними элементами элементов ItemGroup. Имя элемента — это имя дочернего элемента, а значение элемента — значение атрибута Include дочернего элемента. Значения элементов с одинаковым именем собираются в типы элементов с таким именем. Например,

 <группа элементов>
    
    

 

определяет группу элементов, содержащую два элемента. Тип элемента Compile имеет два значения: Program.cs и Properties\AssemblyInfo.cs .

Следующий код создает один и тот же тип элемента, объявляя оба файла в одном атрибуте Include , разделенном точкой с запятой.

 <Группа элементов>
    

 

Дополнительные сведения см. в разделе Элементы.

Примечание

Пути к файлам указываются относительно папки, содержащей файл проекта MSBuild, даже если файл проекта является импортированным файлом проекта. Есть несколько исключений, например, при использовании элементов Import и UsingTask.

Проверка значений типа элемента

Чтобы получить значения типа элемента, используйте следующий синтаксис, где ItemType — имя типа элемента:

 @(ItemType)
 

Используйте этот синтаксис для проверки типа элемента Compile в файле проекта.

Чтобы проверить значения типов элементов:

  1. В редакторе кода замените целевую задачу HelloWorld на этот код:

     <Имя цели="HelloWorld">
      
    
     
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

     msbuild buildapp.csproj -t:HelloWorld
     
  4. Проверьте вывод. Вы должны увидеть эту длинную строку:

     Тип элемента компиляции содержит Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs
     

Значения типа элемента по умолчанию разделяются точкой с запятой.

Чтобы изменить разделитель типа элемента, используйте следующий синтаксис, где ItemType — это тип элемента, а Separator — строка из одного или нескольких разделительных символов:

 @(ItemType, Separator)
 

Измените задачу «Сообщение», чтобы использовать возврат каретки и перевод строки (%0A%0D) для отображения элементов компиляции по одному в строке.

Для отображения значений типов элементов по одному в строке

  1. В редакторе кода замените задачу «Сообщение» этой строкой:

     
     
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

     msbuild buildapp. csproj -t:HelloWorld
     
  4. Проверьте вывод. Вы должны увидеть эти строки:

     Тип элемента компиляции содержит Form1.cs
    Form1.Designer.cs
    Программа.cs
    Свойства\AssemblyInfo.cs
    Свойства\Ресурсы.Designer.cs
    Свойства\Настройки.Designer.cs
     

Включить, исключить и подстановочные знаки

Можно использовать подстановочные знаки «*», «**» и «?» с атрибутом Include, чтобы добавить элементы к типу элементов. Например,

 
 

добавляет все файлы с расширением .jpeg в папку images к типу элемента «Фотографии», а

 
 

добавляет все файлы с расширением .jpeg в папке images и во всех ее подпапках к типу элемента Фото. Дополнительные примеры см. в разделе Практическое руководство. Выберите файлы для сборки.

Обратите внимание, что по мере объявления элементов они добавляются к типу элемента. Например,

 
<Фотографии включают="images\*.gif" />
 

создает тип элемента с именем Photo, содержащий все файлы в папке images с расширением файла .jpeg или .gif . Это эквивалентно следующей строке:

 
 

Элемент можно исключить из типа элемента с помощью атрибута Exclude. Например,

 
 

добавляет все файлы с расширением файла .cs в тип элемента Compile, за исключением файлов, имена которых содержат строку Designer . Дополнительные примеры см. в разделе Практическое руководство. Исключение файлов из сборки.

Атрибут Exclude влияет только на элементы, добавленные атрибутом Include в элементе item, содержащем их оба. Например,

 

 

не исключает файл Form1. cs , который был добавлен в предыдущем элементе item.

Для включения и исключения элементов

  1. В редакторе кода замените задачу «Сообщение» этой строкой:

     
     
  2. Добавить эту группу элементов сразу после элемента Import:

     <Группа элементов>
       
    
     
  3. Сохраните файл проекта.

  4. В командном окне введите и выполните следующую строку:

     msbuild buildapp.csproj -t:HelloWorld
     
  5. Проверьте вывод. Вы должны увидеть эту строку:

     Тип элемента XFiles содержит Form1.cs;Program.cs;Properties/Resources.resx
     

Метаданные элемента

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

Метаданные элемента объявляются в файле проекта путем создания элемента с именем метаданных в качестве дочернего элемента элемента. Элемент может иметь ноль или более значений метаданных. Например, следующий элемент CSFile имеет метаданные культуры со значением «Fr»:

 <Группа элементов>
    
        Отец
    

 

Чтобы получить значение метаданных типа элемента, используйте следующий синтаксис, где ItemType — имя типа элемента, а MetaDataName — имя метаданных:

 %(ItemType.MetaDataName)
 

Чтобы проверить метаданные элемента:

  1. В редакторе кода замените задачу «Сообщение» этой строкой:

     <Текст сообщения="Compile.DependentUpon: %(Compile.DependentUpon)" />
     
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

     msbuild buildapp. csproj -t:HelloWorld
     
  4. Проверьте вывод. Вы должны увидеть эти строки:

     Компиляция.DependentUpon:
    Compile.DependentUpon: Form1.cs
    Compile.DependentUpon: Resources.resx
    Compile.DependentUpon: Настройки.Настройки
     

Обратите внимание, что фраза «Compile.DependentUpon» появляется несколько раз. Использование метаданных с таким синтаксисом в целевом объекте вызывает «пакетирование». Пакетная обработка означает, что задачи внутри цели выполняются один раз для каждого уникального значения метаданных. Это сценарий MSBuild, эквивалентный общей конструкции программирования «цикл for». Дополнительные сведения см. в разделе Пакетная обработка.

Общеизвестные метаданные

Всякий раз, когда элемент добавляется в список элементов, этому элементу назначаются некоторые общеизвестные метаданные. Например, %(Filename) возвращает имя файла любого элемента. Полный список общеизвестных метаданных см. в разделе Метаданные общеизвестных элементов.

Для изучения общеизвестных метаданных:

  1. В редакторе кода замените задачу «Сообщение» этой строкой:

     
     
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

     msbuild buildapp.csproj -t:HelloWorld
     
  4. Проверьте вывод. Вы должны увидеть эти строки:

     Имя файла компиляции: Form1
    Имя файла компиляции: Form1.Designer
    Имя файла компиляции: Программа
    Имя файла компиляции: AssemblyInfo
    Имя файла компиляции: Resources.Designer
    Имя файла компиляции: Settings.Designer
     

Сравнивая два приведенных выше примера, вы можете увидеть, что хотя не каждый элемент типа элемента Compile имеет метаданные DependentUpon, все элементы имеют хорошо известные метаданные Filename.

Преобразование метаданных

Списки элементов могут быть преобразованы в новые списки элементов. Чтобы преобразовать список элементов, используйте следующий синтаксис, где — это имя типа элемента, а — имя метаданных:

 @(ItemType -> '%(MetadataName)')
 

Например, список элементов исходных файлов можно преобразовать в набор объектных файлов с помощью такого выражения, как @(SourceFiles -> '%(Filename).obj') . Дополнительные сведения см. в разделе Преобразования.

Чтобы преобразовать элементы с помощью метаданных:

  1. В редакторе кода замените задачу «Сообщение» этой строкой:

     
     
  2. Сохраните файл проекта.

  3. В командном окне введите и выполните следующую строку:

     msbuild buildapp.csproj -t:HelloWorld
     
  4. Проверьте вывод. Вы должны увидеть эту строку:

     Резервные файлы: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo. bak;Resources.Designer.bak;Settings.Designer.bak
     

Обратите внимание, что метаданные, выраженные в этом синтаксисе, не вызывают пакетную обработку.

Следующие шаги

Чтобы узнать, как поэтапно создавать простой файл проекта в Windows, ознакомьтесь с Пошаговым руководством: Создание файла проекта MSBuild с нуля.

Если вы в основном используете .NET SDK, вы можете продолжить чтение в справочнике MSBuild для проектов .NET SDK.

См. также

  • Обзор MSBuild
  • Ссылка MSBuild

Справочник по командной строке MSBuild — MSBuild

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья
  • 12 минут на чтение

При использовании MSBuild.exe для сборки проекта или файла решения можно включить несколько переключателей для указания различных аспектов процесса.

Каждый переключатель доступен в двух формах: -switch и /switch. В документации показана только форма -switch. Переключатели не чувствительны к регистру. Если вы запускаете MSBuild из оболочки, отличной от командной строки Windows, списки аргументов для переключателя (разделенные точкой с запятой или запятыми) могут нуждаться в одинарных или двойных кавычках, чтобы гарантировать, что списки передаются в MSBuild, а не интерпретируются оболочкой.

Синтаксис

 MSBuild.exe [Переключатели] [ProjectFile]
 

Аргументы

Аргументы Описание
Файл проекта Создает цели в указанном вами файле проекта. Если вы не укажете файл проекта, MSBuild ищет в текущем рабочем каталоге расширение имени файла, которое заканчивается на proj , и использует этот файл. Вы также можете указать файл решения Visual Studio для этого аргумента.

Переключатели

Переключатель Краткая форма Описание
-detailedSummary[: Правда или Ложь ] -ds[: Истина или Ложь ] Если True , показать подробную информацию в конце журнала сборки о созданных конфигурациях и о том, как они были запланированы для узлов.
-graphBuild[: Верно или Ложно ] -graph[: True или False ] Заставляет MSBuild создавать и строить граф проекта. Построение графа включает в себя определение ссылок проекта для формирования зависимостей. Построение этого графа включает в себя попытку построить ссылки на проекты до проектов, которые на них ссылаются, в отличие от традиционного планирования MSBuild. Требуется MSBuild 16 или более поздней версии.
-помощь /? или -ч Показать информацию об использовании. Примером может служить следующая команда:

msbuild.exe -?

-ignoreProjectExtensions: расширений -игнорировать: расширений Игнорировать указанные расширения при определении файла проекта для сборки. Используйте точку с запятой или запятую для разделения нескольких расширений, как показано в следующем примере:

-ignoreprojectextensions:.vcproj,.sln

-inputResultsCaches[: cacheFile [ ;cacheFile2 ] -irc[: cacheFile [ ;cacheFile2 ] Разделенный точкой с запятой список входных файлов кэша, из которых MSBuild будет считывать результаты сборки. Если для -isolateProjects задано значение False , это устанавливает значение True .
-interactive[: Истина или Ложь ] Указывает, что действиям в сборке разрешено взаимодействовать с пользователем. Не используйте этот аргумент в автоматизированном сценарии, где интерактивность не ожидается. Указание -interactive аналогично указанию -interactive:true. Используйте этот параметр, чтобы переопределить значение, полученное из файла ответов.
-isolateProjects[: True или MessageUponIsolationViolation или False ] -isolate[: True или MessageUponIsolationViolation или False ] Заставляет MSBuild собирать каждый проект изолированно. Если установлено значение MessageUponIsolationViolation (или его короткая форма Message ), сериализуются только результаты от целей верхнего уровня, если -outputResultsCache 9Переключатель 0086 поставляется. Это делается для снижения вероятности того, что цель, нарушающая изоляцию, в проекте зависимостей использует неправильное состояние из-за его зависимости от кэшированной цели, чьи побочные эффекты не будут учитываться. (Например, определение свойства.) Это более строгий режим MSBuild, поскольку он требует, чтобы граф проекта был статически обнаруживаемым во время оценки, но может улучшить планирование и уменьшить нагрузку на память при построении большого набора проектов.
-maxCpuCount[: номер ]-м[: номер ] Указывает максимальное количество одновременных процессов для использования при сборке. Если вы не укажете этот переключатель, значение по умолчанию равно 1. Если вы включите этот переключатель без указания значения, MSBuild будет использовать столько процессоров, сколько есть на компьютере. Дополнительные сведения см. в разделе Параллельное создание нескольких проектов.

В следующем примере MSBuild предписывается выполнять сборку с использованием трех процессов MSBuild, что позволяет одновременно выполнять сборку трех проектов:

msbuild myproject. proj -maxcpucount:3

-нет автоответа -ноауторсп Не включать файлы MSBuild.rsp или Directory.Build.rsp автоматически.
-nodeReuse: значение - номер: значение Включите или отключите повторное использование узлов MSBuild. Можно указать следующие значения:

- True . Узлы остаются после завершения сборки, чтобы их можно было использовать в последующих сборках (по умолчанию).
- Ложь . Узлы не остаются после завершения сборки.

Узел соответствует выполняемому проекту. Если включить переключатель -maxcpucount , несколько узлов могут выполняться одновременно.

-нолого Не отображать баннер запуска или сообщение об авторских правах.
-предварительный процесс[: путь к файлу ]-pp[: путь к файлу ] Создайте единый объединенный файл проекта, встроив все файлы, которые будут импортированы во время сборки, с отмеченными их границами. Вы можете использовать этот переключатель, чтобы проще определить, какие файлы импортируются, откуда файлы импортируются и какие файлы участвуют в сборке. При использовании этого переключателя проект не создается.

Если вы укажете путь к файлу , объединенный файл проекта выводится в файл. В противном случае вывод появится в окне консоли.

Сведения об использовании элемента Import для вставки файла проекта в другой файл проекта см. в разделах Импорт элемента (MSBuild) и Практическое руководство. Использование одного и того же целевого объекта в нескольких файлах проекта.

-outputResultsCache[:cacheFile] -орк[:кэшфайл] Выходной файл кэша, в который MSBuild запишет содержимое своих кэшей результатов сборки в конце сборки. Если -isolateProjects имеет значение False , это устанавливает значение True .
-profileEvaluation: <файл> - Профилирует оценку MSBuild и записывает результат в указанный файл. Если расширение указанного файла — «.md», результат генерируется в формате Markdown. В противном случае создается файл, разделенный табуляцией.
-свойство: имя = значение -p: имя = значение Установите или переопределите указанные свойства уровня проекта, где имя — это имя свойства, а значение — значение свойства. Укажите каждое свойство отдельно или используйте точку с запятой или запятую для разделения нескольких свойств, как показано в следующем примере:

-property:WarningLevel=2;OutDir=bin\Debug

- восстановление Запускает цель Restore перед построением фактических целей.
-restoreProperty: имя=значение -rp: имя=значение Задавайте или переопределяйте эти свойства уровня проекта только во время восстановления и не используйте свойства, указанные с помощью аргумента -property. имя — это имя свойства, а значение — это значение свойства. Используйте точку с запятой или запятую для разделения нескольких свойств или укажите каждое свойство отдельно.
- цель: целей -t: целей Создайте указанные цели в проекте. Укажите каждую цель отдельно или используйте точку с запятой или запятую для разделения нескольких целей, как показано в следующем примере:

-target:PrepareResources;Compile

Если вы указываете какие-либо цели с помощью этого переключателя, они запускаются вместо любых целей. в атрибуте DefaultTargets в файле проекта. Дополнительные сведения см. в разделах Целевой порядок сборки и Практическое руководство. Укажите, какую цель строить первой.

Цель — это группа задач. Дополнительные сведения см. в разделе Цели.

-цели [: файл ] -ts[: файл ] Записать список доступных целей в указанный файл (или на устройство вывода, если файл не указан) без фактического выполнения процесса сборки.
-toolsVersion: версия -тв: версия Задает пользовательский набор инструментов. Набор инструментов состоит из задач, целей и инструментов, которые используются для создания приложения. См. Набор инструментов (ToolsVersion) и Стандартные и пользовательские конфигурации наборов инструментов.
-проверка: [схема ] -val[ схема ] Проверьте файл проекта и, если проверка прошла успешно, создайте проект.

Если не указать схему , проект проверяется на соответствие схеме по умолчанию.

Если вы укажете схему , проект будет проверен на соответствие указанной схеме.

Следующий параметр является примером: -validate:MyExtendedBuildSchema.xsd

-многословие: уровень -v: уровень Задает объем информации, отображаемой в журнале сборки. Каждый регистратор отображает события на основе уровня детализации, установленного для этого регистратора.

Можно указать следующие уровни детализации: q[uiet] , m[inimal] , n[ormal] (по умолчанию), d[detailed] и diag[nostic] .

Пример следующей настройки: -многословие:тихо

-версия - версия Отображать только информацию о версии. Проект не построен.
@ файл Вставьте переключатели командной строки из текстового файла. Если у вас несколько файлов, вы указываете их отдельно. Дополнительные сведения см. в разделе Файлы ответов.
-warnAsError[: код [ ;код2 ] -ошибка[ :код [ ;код2 ] Список кодов предупреждений, которые следует рассматривать как ошибки. Используйте точку с запятой или запятую для разделения нескольких кодов предупреждений. Чтобы рассматривать все предупреждения как ошибки, используйте переключатель без значений. Когда предупреждение обрабатывается как ошибка, цель продолжает выполняться, как если бы это было предупреждение, но общая сборка завершается ошибкой.

Пример: -ошибка:MSB4130

-warnNotAsError[: код [ ;код2 ] -noerr [ : код [ ;код2 ] Список кодов предупреждений, которые не следует повышать до ошибок. В частности, если параметр warnAsError установлен для преобразования всех предупреждений в ошибки, коды ошибок, указанные с помощью warnNotAsError, не повышаются. Это не действует, если для warnAsError не установлено преобразование всех предупреждений в ошибки. Используйте точку с запятой или запятую для разделения нескольких кодов предупреждений.

Пример: -noerr:MSB4130

-warnAsMessage[: код [ ;код2 ] -noWarn [: код [ ; код2 ] Список кодов предупреждений, которые следует рассматривать как сообщения низкой важности. Используйте точку с запятой или запятую для разделения нескольких кодов предупреждений.

Пример: -noWarn:MSB3026

Переключатели для регистраторов

файл журнала=msbuild.err

Переключатель Краткая форма Описание
-binaryLogger[:[LogFile=] output.binlog
[;ProjectImports=[Нет,Встроить,ZipFile]]]
-бл Сериализирует все события сборки в сжатый двоичный файл. По умолчанию файл находится в текущем каталоге и называется msbuild.binlog . Двоичный журнал представляет собой подробное описание процесса сборки, которое впоследствии можно использовать для восстановления текстовых журналов и использования другими инструментами анализа. Двоичный журнал обычно в 10-20 раз меньше, чем самый подробный текстовый журнал уровня диагностики, но он содержит больше информации.

Двоичный регистратор по умолчанию собирает исходный текст файлов проекта, включая все импортированные проекты и целевые файлы, обнаруженные во время сборки. Факультативный Переключатель ProjectImports управляет этим поведением:

- ProjectImports=None . Не собирайте импорт проекта.
- ProjectImports=Вставить . Встроить импорт проекта в файл журнала (по умолчанию).
- ProjectImports=ZipFile . Сохраните файлы проекта в .projectimports.zip , где — это то же имя, что и имя файла двоичного журнала.

Значением по умолчанию для ProjectImports является Embed.
Примечание : регистратор не собирает исходные файлы, отличные от MSBuild, такие как .cs , .cpp и т. д.
Файл .binlog можно «воспроизвести», передав его в msbuild.exe в качестве аргумента. вместо проекта/решения. Другие регистраторы получат информацию, содержащуюся в файле журнала, как если бы происходила исходная сборка. Вы можете прочитать больше о двоичном журнале и его использовании по адресу: https://github. com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

Примеры :
- -BL
- -bl: output.binlog
- -bl: output.binlog; ProjectImports = None
- -BL: uput.binlog;
- -bl:..\..\custom.binlog
- -binaryLogger

-consoleLoggerParameters:

параметры

-clp: параметры Передайте указанные вами параметры средству ведения журнала консоли, которое отображает информацию о сборке в окне консоли. Вы можете указать следующие параметры:

- Сводка производительности . Покажите время, затраченное на задачи, цели и проекты.
- Сводка . Покажите сводку ошибок и предупреждений в конце.
- №Сводка . Не показывать сводку ошибок и предупреждений в конце.
- Только ошибки . Показывать только ошибки.
- Только предупреждения . Показывать только предупреждения.
- NoItemAndPropertyList . Не показывать список элементов и свойств, которые будут отображаться в начале каждой сборки проекта, если уровень детализации установлен на диагностика .
- Показать командную строку . Показать сообщений TaskCommandLineEvent .
- ShowProjectFile . Показывать путь к файлу проекта в диагностических сообщениях. Этот параметр включен по умолчанию.
- Отметка времени показа . Показывать метку времени в качестве префикса к любому сообщению.
- ShowEventId . Показать идентификатор события для каждого запущенного события, завершенного события и сообщения.
- ForceNoAlign . Не выравнивайте текст по размеру буфера консоли.
- Дисаблеконсолеколор . Используйте цвета консоли по умолчанию для всех сообщений журнала.
- DisableMPLogging . Отключите многопроцессорный стиль вывода журнала при работе в немногопроцессорном режиме.
- EnableMPLogging . Включите многопроцессорный стиль ведения журнала даже при работе в немногопроцессорном режиме. Этот стиль ведения журнала включен по умолчанию.
- ForceConsoleColor . Используйте цвета консоли ANSI, даже если консоль их не поддерживает.
- Многословность . Переопределите параметр -verbosity для этого регистратора.

Используйте точку с запятой для разделения нескольких параметров, как показано в следующем примере:

-consoleloggerparameters:PerformanceSummary;NoSummary -verbosity:minimal

Средство ведения журнала консоли по умолчанию имеет нормальную детализацию и включает сводку .

-распределенный филелоггер -дфл Заносит выходные данные сборки каждого узла MSBuild в отдельный файл. Исходным расположением этих файлов является текущий каталог. По умолчанию файлы называются MSBuild.log . Вы можете использовать переключатель -fileLoggerParameters , чтобы указать расположение файлов и другие параметры для fileLogger.

Если вы назовете файл журнала с помощью переключателя -fileLoggerParameters , распределенный регистратор будет использовать это имя в качестве шаблона и добавлять идентификатор узла к этому имени при создании файла журнала для каждого узла.

-distributedLogger:

центральный регистратор

пересылающий регистратор

-dl: центральный регистратор регистратор переадресации Регистрировать события из MSBuild, присоединяя к каждому узлу отдельный экземпляр средства ведения журнала. Чтобы указать несколько регистраторов, укажите каждый регистратор отдельно.

Вы используете синтаксис регистратора для указания регистратора. Для синтаксиса регистратора см. переключатель -logger ниже.

В следующих примерах показано, как использовать этот переключатель:

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll

-fileLogger

[номер]

-фл[ номер ] Запишите выходные данные сборки в один файл в текущем каталоге. Если вы не укажете номер , выходной файл будет называться msbuild.log . Если вы укажете число , выходной файл будет называться msbuild.log , где равно номер . Число может быть цифрой от 1 до 9.

Вы можете использовать переключатель -fileLoggerParameters , чтобы указать расположение файла и другие параметры для fileLogger.

-fileLoggerParameters[число]:

параметры

-flp[ число ]: параметров Задает любые дополнительные параметры для файлового регистратора и распределенного файлового регистратора. Наличие этого переключателя подразумевает, что соответствующий - filelogger[ номер ] переключатель присутствует. Число может быть цифрой от 1 до 9.

Можно использовать все параметры, которые указаны для -consoleloggerparameters . Вы также можете использовать один или несколько из следующих параметров:

- LogFile . Путь к файлу журнала, в который записывается журнал сборки. Регистратор распределенных файлов добавляет к этому пути префикс к именам своих файлов журналов.
- Приложение . Определяет, добавляется ли журнал сборки к файлу журнала или перезаписывается. При установке переключателя журнал сборки добавляется к файлу журнала. Когда переключатель отсутствует, содержимое существующего файла журнала перезаписывается.
Пример: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
Если указать явный параметр true или false , журнал будет добавлен независимо от параметра. Если вы не включаете переключатель добавления, журнал перезаписывается.
В этом случае файл перезаписывается: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
В этом случае к файлу добавляется: msbuild myfile.proj -flp:FileLogger,Microsoft. Сборка;logfile=MyLog.log;append=true
В этом случае файл добавляется: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- Кодировка . Указывает кодировку файла (например, UTF-8, Unicode или ASCII).

В следующем примере создаются отдельные файлы журналов для предупреждений и ошибок:

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

В следующих примерах показаны другие возможности:

-fileLoggerParameters:LogFile=MyLog.log;Добавить; Многословность=диагностическая;Кодировка=UTF-8

-flp:Сводка;Подробность=минимальная;Файл журнала=msbuild. sum

-flp1:warningsonly;logfile=msbuild.wrn 900psonly

- регистратор:

регистратор

-l: регистратор Указывает средство ведения журнала, которое следует использовать для регистрации событий из MSBuild. Чтобы указать несколько регистраторов, укажите каждый регистратор отдельно.

Используйте следующий синтаксис для регистратора : [``LoggerClass``,]``LoggerAssembly``[;``LoggerParameters``]

Используйте следующий синтаксис для LoggerClass : [``PartialOrFullNamespace` `.]``LoggerClassName

Вам не нужно указывать класс регистратора, если сборка содержит только один регистратор.

Используйте следующий синтаксис для LoggerAssembly : {``AssemblyName``[``StrongName``] | Сборочный файл``}

Параметры логгера являются необязательными и передаются логгеру точно так же, как вы их вводите.

В следующих примерах используется переключатель -logger .

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML

-ноконсолелоггер -ноконлог Отключите средство ведения журнала консоли по умолчанию и не записывайте события в консоль.

Пример 1

В следующем примере создается цель перестроить проекта MyProject.proj .

 MSBuild.exe MyProject.proj -t: перестроить
 

Пример 2

Вы можете использовать MSBuild.exe для выполнения более сложных сборок. Например, вы можете использовать его для создания конкретных целей конкретных проектов в решении. В следующем примере выполняется перестроение проекта NotInSolutionFolder и очистка проекта 9.0085 InSolutionFolder , который находится в папке решения NewFolder .