Элемент Item (MSBuild)
Содержит определяемый пользователем элемент и его метаданные. Каждый элемент, используемый в проекте MSBuild, должен быть указан как дочерний для элемента ItemGroup.
<Item Include="*.cs"
Exclude="MyFile.cs"
Remove="RemoveFile.cs"
Condition="'String A'=='String B'" >
<ItemMetadata1>...</ItemMetadata1>
<ItemMetadata2>...</ItemMetadata2>
</Item>
Атрибуты и элементы
В следующих разделах описаны атрибуты, дочерние и родительские элементы.
Атрибуты
Атрибут |
Описание |
---|---|
Include |
Обязательный атрибут. Файл или подстановочный знак, включаемый в список элементов. |
Exclude |
Необязательный атрибут. Файл или подстановочный знак, исключаемый из списка элементов. |
Condition |
Необязательный атрибут. Проверяемое условие. Для получения дополнительной информации см. Условия MSBuild. |
Remove |
Необязательный атрибут. Файл или подстановочный знак, удаляемый из списка элементов. Этот атрибут является допустимым только в том случае, если он указан для элемента ItemGroup, находящегося в Target. |
KeepMetadata |
Необязательный атрибут. Метаданные для исходных элементов, добавляемые в целевые элементы. Из исходного элемента в целевой передаются только метаданные, имена которых указаны в списке с разделителем точкой с запятой. Для получения дополнительной информации см. Элементы MSBuild. Этот атрибут является допустимым только в том случае, если он указан для элемента ItemGroup, находящегося в Target. |
RemoveMetadata |
Необязательный атрибут. Метаданные для исходных элементов, не передаваемые в целевые элементы. Из исходного элемента в целевой передаются все метаданные за исключением метаданных, имена которых содержатся в списке имен, разделенных точкой с запятой. Для получения дополнительной информации см. Элементы MSBuild. Этот атрибут является допустимым только в том случае, если он указан для элемента ItemGroup, находящегося в Target. |
KeepDuplicates |
Необязательный атрибут. Указывает, следует ли добавлять элемент в целевую группу при наличии точной копией существующего элемента. Если исходный и целевой элементы имеют одинаковое значение Include, но различные метаданные, элемент добавляется в целевую группу, даже если KeepDuplicates имеет значение false. Для получения дополнительной информации см. Элементы MSBuild. Этот атрибут является допустимым только в том случае, если он указан для элемента ItemGroup, находящегося в Target. |
Дочерние элементы
Элемент |
Описание |
---|---|
Определяемый пользователем ключ метаданных элемента, содержащий значение метаданных элемента. Элемент может содержать любое число элементов ItemMetadata, включая ноль. |
Родительские элементы
Элемент |
Описание |
---|---|
Группирующий элемент для элементов. |
Заметки
Элементы Item определяют входные данные для системы построения и группируются в коллекции элементов на основании определенных пользователем имен коллекции. Эти коллекции элементов можно использовать в качестве параметров для задач, в которых с помощью отдельных элементов выполняются этапы процесса построения. Для получения дополнительной информации см. Элементы MSBuild.
Использование нотации @(myType) позволяет расширить коллекцию элементов типа myType до списка строк, разделяемых точкой с запятой, и передать в параметр. Если параметр имеет тип string, значением параметра является список элементов, разделенных точкой с запятой. Если параметр представляет собой массив строк (string[]), каждый элемент вставляется в массив на основании расположения точек с запятой. Если параметр задачи имеет тип ITaskItem[], значением является содержимое коллекции элементов и все присоединенные метаданные. Чтобы разделять элементы с помощью символа, отличного от точки с запятой, используйте синтаксис @(myType, 'разделитель').
Подсистема MSBuild может оценивать подстановочные знаки, такие как * и ?, и рекурсивные подстановочные знаки, такие как /**/*.cs. Для получения дополнительной информации см. Элементы MSBuild.
Пример
В следующем примере кода показано объявление двух элементов типа CSFile. Второй объявленный элемент содержит метаданные, где MyMetadata имеет значение HelloWorld.
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>