Fonctions d'élément
À compter de MSBuild 4.0, le code des tâches et des cibles peut appeler des fonctions d'élément pour obtenir des informations sur les éléments dans le projet.Ces fonctions simplifient l'obtention des éléments Distinct() et sont plus rapides que l'exécution d'une boucle sur les éléments.
Fonctions d'élément de chaîne
Vous pouvez utiliser les méthodes et les propriétés de chaîne dans le.NET Framework pour traiter une valeur d'élément.Pour les méthodes d' String , spécifiez le nom de la méthode.Pour les propriétés d' String , spécifiez le nom de la propriété après « get_ ».
Pour les éléments qui ont plusieurs chaînes, la méthode de chaîne ou des séries de propriété sur chaque chaîne.
l'exemple suivant montre comment utiliser ces fonctions d'élément de chaîne.
<ItemGroup>
<theItem Include="andromeda;tadpole;cartwheel" />
</ItemGroup>
<Target Name = "go">
<Message Text="IndexOf @(theItem->IndexOf('r'))" />
<Message Text="Replace @(theItem->Replace('tadpole', 'pinwheel'))" />
<Message Text="Length @(theItem->get_Length())" />
<Message Text="Chars @(theItem->get_Chars(2))" />
</Target>
<!--
Output:
IndexOf 3;-1;2
Replace andromeda;pinwheel;cartwheel
Length 9;7;9
Chars d;d;r
-->
Fonctions intrinsèques d'élément
Le tableau ci-dessous répertorie les fonctions intrinsèques disponibles pour les éléments.
Fonction |
Exemple |
Description |
---|---|---|
Count |
@(MyItem->Count()) |
Retourne le nombre d'éléments. |
DirectoryName |
@(MyItem->DirectoryName()) |
Retourne l'équivalent d' Path.DirectoryName pour chaque élément. |
Distinct |
@(MyItem->Distinct()) |
Retourne les éléments qui ont des valeurs distinctes d' Include .Les métadonnées sont ignorées.La comparaison ne respecte pas la casse. |
DistinctWithCase |
@(MyItem->DistinctWithCase()) |
Retourne les éléments qui ont des valeurs distinctes d' itemspec .Les métadonnées sont ignorées.La comparaison respecte la casse. |
Reverse |
@(MyItem->Reverse()) |
Retourne les éléments dans l'ordre inverse. |
AnyHaveMetadataValue |
@(MyItem->AnyHaveMetadataValue("MetadataName", "MetadataValue")) |
Retourne boolean pour indiquer si un élément est le nom de métadonnées et la valeur donnés.La comparaison ne respecte pas la casse. |
ClearMetadata |
@(MyItem->ClearMetadata()) |
Retourne des éléments avec leurs métadonnées effacées.Uniquement itemspec est conservé. |
HasMetadata |
@(MyItem->HasMetadataValue("MetadataName") |
Retourne les éléments qui ont le nom des métadonnées donné.La comparaison ne respecte pas la casse. |
Metadata |
@(MyItem->Metadata("MetadataName")) |
Retourne la valeur des métadonnées portant le nom des métadonnées. |
WithMetadataValue |
@(MyItem->WithMetadataValue("MetadataName", "MetadataValue") |
Retourne les éléments qui ont le nom des métadonnées et la valeur donnés.La comparaison ne respecte pas la casse. |
l'exemple suivant montre comment utiliser des fonctions intrinsèques d'élément.
<ItemGroup>
<TheItem Include="first">
<Plant>geranium</Plant>
</TheItem>
<TheItem Include="second">
<Plant>algae</Plant>
</TheItem>
<TheItem Include="third">
<Plant>geranium</Plant>
</TheItem>
</ItemGroup>
<Target Name="go">
<Message Text="MetaData: @(TheItem->Metadata('Plant'))" />
<Message Text="HasMetadata: @(theItem->HasMetadata('Plant'))" />
<Message Text="WithMetadataValue: @(TheItem->WithMetadataValue('Plant', 'geranium'))" />
<Message Text=" " />
<Message Text="Count: @(theItem->Count())" />
<Message Text="Reverse: @(theItem->Reverse())" />
</Target>
<!--
Output:
MetaData: geranium;algae;geranium
HasMetadata: first;second;third
WithMetadataValue: first;third
Count: 3
Reverse: third;second;first
-->