Partager via


Nouvelles méthodes de manipulation des éléments et propriétés (MSBuild)

Mise à jour : novembre 2007

À partir de MSBuild 3.5, vous pouvez effectuer les opérations suivantes :

  • Définir un groupe de définitions d'élément pour contenir des métadonnées qui s'appliquent à tous les éléments dans le projet.

  • Créer dynamiquement, supprimer, combiner et modifier les propriétés, les éléments et les métadonnées d'élément directement dans un groupe d'éléments. Vous pouvez exécuter ces opérations au lieu d'utiliser les tâches CreateItem et CreateProperty.

Groupes de définitions d'élément

L'élément ItemDefinitionGroup vous permet de définir un jeu de définitions d'élément, qui sont des valeurs de métadonnées appliquées par défaut à tous les éléments dans le projet. Pour plus d'informations, consultez Définitions d'éléments.

Ajustement dynamique des métadonnées d'un groupe d'éléments

MSBuild utilise ItemGroup, élément (MSBuild) et PropertyGroup, élément (MSBuild) pour déclarer statiquement des éléments et des propriétés. Pour créer ou modifier des propriétés et des éléments pendant la génération dans MSBuild 2.0, vous deviez utiliser CreateItem, tâche ou CreateProperty, tâche. Ce processus était gênant et ne prenait pas très bien en charge les mises à jour dynamiques. Toutefois, MSBuild 3.5 vous permet dynamiquement de créer, supprimer, combiner ou modifier les propriétés, les éléments et les métadonnées d'élément directement dans un groupe d'éléments.

Comparez les exemple suivants : L'exemple 1 illustre l'utilisation de la tâche CreateItem pour ajouter un paramètre de tâche et créer une liste d'éléments avec les métadonnées. L'exemple 3 illustre la nouvelle méthode d'ajout direct de métadonnées dans ItemGroup.

Exemple 1: simple exemple d'ajout d'un paramètre de tâche avec la tâche CreateItem. La première cible utilise la tâche CreateItem pour créer dynamiquement une nouvelle liste d'éléments appelée CultureResource. La deuxième cible ajoute des nouvelles métadonnées, nommées TargetDirectory, pour toutes les ressources Culture dans la liste d'origine.

<Target Name="GenerateBeforeCompile">
     <CreateItem Include="SomeGeneratedCode.cs">
        <Output TaskParameter="Include" ItemName="Compile" /> 
    </CreateItem>
</Target>

<Target Name="ProcessCultureResources">
    <CreateItem Include="@(EmbeddedResource)" 
      Condition="'%(Culture)' != ''"
      AdditionalMetadata="TargetDirectory=%
      (EmbeddedResource.Culture)">
    <Output TaskParameter="Include" ItemName="CultureResource" />
    </CreateItem>
</Target>

Exemple 2: les résultats des exemples précédents peuvent maintenant être obtenus en ajoutant directement des paramètres et métadonnées à ItemGroup.

<Target Name="GenerateBeforeCompile">
     <ItemGroup>
        <Compile Include="SomeGeneratedCode.cs" />
    </ItemGroup>
 </Target>
 
<Target Name="ProcessCultureResources">
    <ItemGroup>
        <CultureResource Include="@(EmbeddedResource)"
          Condition="'%(EmbeddedResource.Culture)' != ''">
             <TargetDirectory>%(EmbeddedResource.Culture) </TargetDirectory>
        </CultureResource>
    </ItemGroup>
</Target>

Suppression d'éléments

Pour omettre des éléments de listes dans les versions antérieures de MSBuild, il fallait créer des listes. Toutefois, vous pouvez désormais supprimer directement des éléments à l'aide du nouveau paramètre Remove, comme illustré ci-dessous :

<ItemGroup>
    <!—Remove *.licx from the EmbeddedResource list - ->
    <EmbeddedResource Remove="*.licx" />
 
    <!—Or remove items in @(licx) from EmbeddedResource list -- >
    <EmbeddedResource Remove="@(licx)" />
</ItemGroup>

Voir aussi

Concepts

Référence du schéma de fichier de projet MSBuild

Autres ressources

Concepts MSBuild