Элементы MSBuild

Обновлен: Ноябрь 2007

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

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

Для объявления элементов в файле проекта создается элемент с именем набора элементов, являющийся дочерним по отношению к элементу ItemGroup. В атрибуте Include элемента задаются файлы, которые нужно включить в набор элементов. Например, с помощью приведенного ниже кода создается набор элементов с именем Compile, в который входят два файла.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

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

<ItemGroup>
    <Compile Include = "file1.cs;file2.cs"/>
</ItemGroup>

Ссылки на элементы в файле проекта

Для ссылки на наборы элементов в файле проекта используется синтаксис @(ItemCollectionName). Например, ссылка на набор элементов в предыдущем примере выглядела бы следующим образом: @(Compile). При использовании этого синтаксиса можно передавать наборы элементов задачам, указывая набор элементов в качестве параметра этой задачи. Дополнительные сведения см. в разделе Практическое руководство. Использование подстановочных знаков для построения всех файлов в каталоге.

По умолчанию элементы в наборах отделяются точкой с запятой (;) при добавлении. Чтобы указать разделитель, отличающийся от заданного по умолчанию, используйте синтаксис @(ItemCollectionName, 'разделитель'). Дополнительные сведения см. в разделе Практическое руководство. Отображение набора элементов, разделенных запятыми.

Использование знаков подстановки для указания элементов

С помощью знаков подстановки **, * и ? можно указать группу файлов в качестве входных данных для построения, вместо того чтобы перечислять все файлы по отдельности. Например, чтобы указать все файлы с расширением CS или файлы с расширением VB, находящиеся в одном каталоге с файлом проекта, используйте один из следующих элементов в файле проекта:

<CSFile Include="*.cs"/>

– либо –

<VBFile Include="*.vb"/>

ms171453.alert_note(ru-ru,VS.90).gifПримечание.

Знаки подстановки можно использовать для элементов только при указании входных данных для построения. Например, нельзя использовать знаки подстановки для указания входных данных в параметре Sources задачи Csc. MSBuild примет знаки подстановки за значения параметра, но будет воспринимать их как строковые литералы и не станет оценивать. В следующем примере показано использование строкового литерала *.cs в качестве значения параметра Sources:

<Target Name="Compile">
    <CSC Sources="*.cs" />
</Target>

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

Использование атрибута Exclude

В элементах может также содержаться атрибут Exclude, исключающий определенные файлы из набора элементов. Атрибут Exclude удобно использовать вместе со знаками подстановки. Например, с помощью следующего кода в каталог добавляется каждый файл с расширением CS, кроме файла DoNotBuild.cs:

<ItemGroup>
    <CSFile
        Include="*.cs"
        Exclude="DoNotBuild.cs"/>
</ItemGroup>

Дополнительные сведения см. в разделе Как собрать в каталоге все файлы, кроме одного.

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

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

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

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

Ссылки на метаданные элементов в файле проекта

Для ссылки на метаданные элементов в файле проекта используется синтаксис %(ItemMetadataName). Если существует неоднозначность, можно использовать в определении имя набора элементов, например %(ItemCollectionName.ItemMetaDataName). В приведенном ниже примере метаданные Display используются для пакетной обработки задачи Message. Дополнительные сведения об использовании метаданных элементов для пакетной обработки см. в разделе Практическое руководство. Пакетная обработка задач на основе метаданных элемента.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Stuff Include="One.cs" >
            <Display>false</Display>
        </Stuff>
        <Stuff Include="Two.cs">
            <Display>true</Display>
        </Stuff>
    </ItemGroup>
    <Target Name="Batching">
        <Message Text="@(Stuff)" Condition=" '%(Display)' == 'true' "/>
    </Target>
</Project>

Стандартные метаданные элементов

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

Преобразование наборов элементов

Наборы элементов можно преобразовать в новые наборы элементов. Например, набор элементов, состоящий из файлов с расширением CPP, можно преобразовать в набор, состоящий из файлов с расширением OBJ, с помощью выражения @(CppFiles -> '%(Filename).obj'). Дополнительные сведения см. в разделе Преобразования MSBuild.

См. также

Задачи

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

Как собрать в каталоге все файлы, кроме одного

Основные понятия

Пакетная обработка в MSBuild

Задачи MSBuild

Ссылки

Элемент ItemGroup (MSBuild)

Элемент Item (MSBuild)

Элемент ItemMetadata (MSBuild)

Общеизвестные метаданные элементов MSBuild