Поделиться через


Элемент Item (MSBuild)

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

<Проект>
  <ItemGroup>
   <Пункт>

Синтаксис

<Item Include="*.cs"
        Exclude="MyFile.cs"
        Condition="'String A'=='String B'">
    <ItemMetadata1>...</ItemMetadata1>
    <ItemMetadata2>...</ItemMetadata2>
</Item>

Указание метаданных в качестве атрибутов

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

Например, чтобы указать список пакетов NuGet, обычно используется следующий синтаксис.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

Однако теперь можно передать метаданные Version в качестве атрибута, например в следующем синтаксисе:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>

Атрибуты и элементы

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

Attributes

Свойство Description
Include Необязательный атрибут.

Файл или подстановочный знак для включения в список элементов.
Exclude Необязательный атрибут.

Файл или подстановочный знак, которые следует исключить из списка элементов.
Condition Необязательный атрибут.

Условие, которое необходимо оценить. Дополнительные сведения см. в разделе Условия.
Remove Необязательный атрибут.

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

MatchOnMetadata Необязательный атрибут.

Remove Изменяет атрибуты, ссылающиеся на другие элементы, которые соответствуют указанным именам метаданных, а не совпадают со значениями ссылочных элементов.

Этот атрибут действителен, только если он указан вместе с атрибутом Remove , который содержит только ссылки на другие элементы (например, Remove="@(Compile);@(Content)"). Дополнительные сведения о элементах.
MatchOnMetadataOptions Необязательный атрибут.

Указывает стратегию сопоставления строк, используемую MatchOnMetadata. Возможные значения: CaseSensitive, CaseInsensitiveили PathLike. Значение по умолчанию — CaseInsensitive.
KeepDuplicates Необязательный атрибут.

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

Этот атрибут действителен, только если он указан для элемента в объекте, который ItemGroup находится в объекте Target.
KeepMetadata Необязательный атрибут.

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

Этот атрибут действителен, только если он указан для элемента в объекте, который ItemGroup находится в объекте Target.
RemoveMetadata Необязательный атрибут.

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

Этот атрибут действителен, только если он указан для элемента в объекте, который ItemGroup находится в объекте Target.
Update Необязательный атрибут. (Доступно только для проектов .NET Core в Visual Studio 2017 или более поздней версии.)

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

Этот атрибут действителен только в том случае, если он указан для элемента в ней ItemGroupTarget.

Дочерние элементы

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

MSBuild интерпретирует дочерние элементы элементов в виде метаданных элемента.

Родительские элементы

Элемент Description
ItemGroup Группирование элементов для элементов.

Замечания

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

Использование нотации @(<myType) позволяет развернуть коллекцию элементов типа <myType>> в список строк с запятой и передать параметру. Если параметр имеет тип string, то значение параметра — это список элементов, разделенных точкой с запятой. Если параметр является массивом строк (string[]), каждый элемент вставляется в массив в зависимости от расположения с запятой. Если параметр задачи имеет тип ITaskItem[], значение — это содержимое коллекции элементов вместе с любыми метаданными, подключенными. Чтобы разделять каждый элемент с помощью символа, отличного от точки с запятой, используйте синтаксис @(<myType>, разделитель<>).

Модуль MSBuild может оценивать подстановочные знаки, такие как и ? рекурсивные подстановочные знаки, такие как */**/*.cs. Дополнительные сведения см. в разделе Элементы.

Примеры

В следующем примере кода показано, как объявить два элемента типа CSFile. Второй объявленный элемент содержит метаданные, которые имеют MyMetadata значение HelloWorld.

<ItemGroup>
    <CSFile Include="engine.cs; form.cs" />
    <CSFile Include="main.cs" >
        <MyMetadata>HelloWorld</MyMetadata>
    </CSFile>
</ItemGroup>

В следующем примере кода показано, как использовать Update атрибут для изменения метаданных в файле с именем somefile.cs , который был включен через глоб. (Доступно только для проектов .NET Core в Visual Studio 2017 или более поздней версии.)

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>

См. также