Элементы 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"/>
Примечание. |
---|
Знаки подстановки можно использовать для элементов только при указании входных данных для построения. Например, нельзя использовать знаки подстановки для указания входных данных в параметре 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.
См. также
Задачи
Практическое руководство. Использование подстановочных знаков для построения всех файлов в каталоге
Как собрать в каталоге все файлы, кроме одного