Item, élément (MSBuild)
Contient un élément défini par l'utilisateur et ses métadonnées. Chaque élément utilisé dans un projet MSBuild doit être spécifié en tant qu’enfant d’un élément ItemGroup
.
<Projet>
<ItemGroup>
<Item>
Syntaxe
<Item Include="*.cs"
Exclude="MyFile.cs"
Condition="'String A'=='String B'">
<ItemMetadata1>...</ItemMetadata1>
<ItemMetadata2>...</ItemMetadata2>
</Item>
Spécifier des métadonnées en tant qu’attributs
Dans MSBuild version 15.1 ou ultérieure, toutes les métadonnées dont le nom n’entre pas en conflit avec la liste actuelle des attributs peuvent éventuellement être exprimées en tant qu’attribut.
Par exemple, pour spécifier une liste de packages NuGet, vous utiliseriez normalement une syntaxe similaire à la suivante.
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
<Version>9.0.1-beta1<Version>
</PackageReference>
</ItemGroup>
À présent, toutefois, vous pouvez passer les métadonnées Version
en tant qu’attribut, comme dans la syntaxe suivante :
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>
Attributs et éléments
Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.
Attributs
Attribut | Description |
---|---|
Include |
Attribut facultatif. Fichier ou caractère générique à inclure dans la liste des éléments. |
Exclude |
Attribut facultatif. Fichier ou caractère générique à exclure de la liste des éléments. |
Condition |
Attribut facultatif. Condition à évaluer. Pour plus d’informations, consultez l’article Conditions (Conditions MSBuild). |
Remove |
Attribut facultatif. Fichier ou caractère générique à supprimer de la liste des éléments. |
MatchOnMetadata |
Attribut facultatif. Modifie les attributs Remove qui référencent d’autres éléments pour qu’ils correspondent aux noms de métadonnées spécifiés au lieu de correspondre aux valeurs des éléments référencés. Cet attribut est valide uniquement s’il est spécifié avec un attribut Remove qui contient uniquement des références à d’autres éléments (par exemple Remove="@(Compile);@(Content)" ). Plus d’informations dans Éléments. |
MatchOnMetadataOptions |
Attribut facultatif. Spécifie la chaîne correspondant à la stratégie utilisée par MatchOnMetadata . Les valeurs possibles sont CaseSensitive , CaseInsensitive ou PathLike . La valeur par défaut est CaseInsensitive . |
KeepDuplicates |
Attribut facultatif. Spécifie si un élément doit être ajouté au groupe cible s'il s'agit d'une copie exacte d'un élément existant. Si les éléments source et cible ont les mêmes valeurs Include mais des métadonnées différentes, l'élément est ajouté même si KeepDuplicates est défini sur false . Pour plus d’informations, consultez l’article Éléments MSBuild.Cet attribut n'est valide que s'il est spécifié pour un élément d'un ItemGroup présent dans un Target . |
KeepMetadata |
Attribut facultatif. Métadonnées des éléments sources à ajouter aux éléments cibles. Seules les métadonnées dont les noms sont spécifiés dans la liste délimitée par des points-virgules sont transférées depuis un élément source vers un élément cible. Pour plus d’informations, consultez l’article Éléments MSBuild. Cet attribut n'est valide que s'il est spécifié pour un élément d'un ItemGroup présent dans un Target . |
RemoveMetadata |
Attribut facultatif. Métadonnées des éléments sources à ne pas transférer aux éléments cibles. Toutes les métadonnées sont transférées depuis un élément source vers un élément cible, à l'exception des métadonnées dont le nom figure dans la liste de noms délimitée par des points-virgules. Pour plus d’informations, consultez l’article Éléments MSBuild. Cet attribut n'est valide que s'il est spécifié pour un élément d'un ItemGroup présent dans un Target . |
Update |
Attribut facultatif. (Disponible uniquement pour les projets .NET Core dans Visual Studio versions 2017 ou ultérieures). Vous permet de modifier les métadonnées d’un élément ; généralement utilisé pour remplacer les métadonnées par défaut d’éléments spécifiques après qu’un groupe d’éléments est initialement spécifié (par exemple, avec un caractère générique carte). Cet attribut est valide seulement s’il est spécifié pour un élément d’un ItemGroup qui n’est pas présent dans un Target . |
Éléments enfants
Élément | Description |
---|---|
ItemMetadata | Clé de métadonnées d'élément définie par l'utilisateur, qui contient la valeur des métadonnées de l'élément. Un élément peut ne contenir aucun élément ItemMetadata ou en contenir plusieurs. |
Éléments parents
Élément | Description |
---|---|
ItemGroup | Élément grouping pour d’autres éléments. |
Notes
Les éléments Item
définissent les entrées du système de génération et sont regroupés en collections d'éléments, selon leur nom de collection défini par l'utilisateur. Ces collections d’éléments peuvent être utilisées comme paramètres des tâches, lesquelles utilisent les éléments d’une collection pour exécuter les étapes du processus de génération. Pour plus d’informations, consultez l’article Éléments MSBuild.
La notation @(<myType>) permet de développer une collection d’éléments de type <myType> en une liste de chaînes séparées par des points-virgules, et de la transmettre à un paramètre. Si le paramètre est de type string
, la valeur du paramètre correspond à la liste des éléments séparés par des points-virgules. Si le paramètre est un tableau de chaînes (string[]
), chaque élément est inséré dans le tableau selon l'emplacement des points-virgules. Si le paramètre de tâche est de type ITaskItem[]
, la valeur correspond au contenu de la collection d'éléments et à toutes les métadonnées associées. Pour délimiter chaque élément à l’aide d’un caractère autre que le point-virgule, utilisez la syntaxe @(<myType>, '<separator>').
Le moteur MSBuild peut évaluer les caractères génériques comme que *
et ?
, ainsi que les caractères génériques récursifs comme /**/*.cs. Pour plus d’informations, consultez l’article Éléments MSBuild.
Exemples
L'exemple de code suivant montre comment déclarer deux éléments de type CSFile
. Le second élément déclaré contient les métadonnées dans lesquelles MyMetadata
a la valeur HelloWorld
.
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>
L’exemple de code suivant montre comment utiliser l’attribut Update
pour modifier les métadonnées dans un fichier appelé somefile.cs fourni par le biais d’un glob. (Disponible uniquement pour les projets .NET Core dans Visual Studio versions 2017 ou ultérieures).
<ItemGroup>
<Compile Update="somefile.cs"> // or Update="*.designer.cs"
<MetadataKey>MetadataValue</MetadataKey>
</Compile>
</ItemGroup>