Traitement par lots MSBuildMSBuild batching

MSBuildMSBuild a la capacité de diviser les listes d’éléments en différentes catégories, ou lots, en fonction des métadonnées des éléments, et d’exécuter une cible ou une tâche une fois avec chaque lot. has the ability to divide item lists into different categories, or batches, based on item metadata, and run a target or task one time with each batch.

Traitement par lots des tâchesTask batching

Le traitement de tâches par lots vous permet de simplifier vos fichiers projet en fournissant un moyen de diviser les listes d’éléments en différents lots et de passer chacun de ces lots dans une tâche séparément.Task batching allows you to simplify your project files by providing a way to divide item lists into different batches and pass each of those batches into a task separately. Cela signifie qu’une tâche et ses attributs ne doivent être déclarés qu’une seule fois dans un fichier projet, même si elle peut être exécutée plusieurs fois.This means that a project file only needs to have the task and its attributes declared once, even though it can be run several times.

Vous spécifiez que MSBuildMSBuild doit effectuer un traitement par lots avec une tâche en utilisant la notation %(<ItemMetaDataName>) dans un des attributs de la tâche.You specify that you want MSBuildMSBuild to perform batching with a task by using the %(<ItemMetaDataName>) notation in one of the task attributes. L’exemple suivant fractionne la liste d’éléments Example en lots en fonction de la valeur des métadonnées de l’élément Color et passe séparément chacun des lots à la tâche MyTask.The following example splits the Example item list into batches based on the Color item metadata value, and passes each of the batches to the MyTask task separately.

Note

Si vous ne référencez pas la liste d’éléments ailleurs dans les attributs de tâche, ou si le nom des métadonnées peut être ambigu, vous pouvez utiliser la notation %(<ItemCollection.ItemMetaDataName>) pour qualifier complètement la valeur des métadonnées de l’élément à utiliser pour le traitement par lots.If you do not reference the item list elsewhere in the task attributes, or the metadata name may be ambiguous, you can use the %(<ItemCollection.ItemMetaDataName>) notation to fully qualify the item metadata value to use for batching.

<Project  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

    <ItemGroup>  
        <Example Include="Item1">  
            <Color>Blue</Color>  
        </Example>  
        <Example Include="Item2">  
            <Color>Red</Color>  
        </Example>  
    </ItemGroup>  

    <Target Name="RunMyTask">  
        <MyTask  
            Sources = "@(Example)"  
            Output = "%(Color)\MyFile.txt"/>  
    </Target>  

</Project>  

Pour obtenir des exemples de traitement par lots plus spécifiques, consultez Métadonnées d’élément dans le traitement par lots des tâches.For more specific batching examples, see Item metadata in task batching.

Traitement par lots des ciblesTarget batching

MSBuildMSBuild vérifie si les entrées et sorties d’une cible sont à jour avant d’exécuter la cible. checks if the inputs and outputs of a target are up-to-date before it runs the target. Si les entrées et les sorties sont à jour, la cible est ignorée.If both inputs and outputs are up-to-date, the target is skipped. Si une tâche à l’intérieur d’une cible utilise le traitement par lots, MSBuildMSBuild doit déterminer si les entrées et sorties de chaque lot d’éléments sont à jour.If a task inside of a target uses batching, MSBuildMSBuild needs to determine if the inputs and outputs for each batch of items is up-to-date. Sinon, la cible est exécutée chaque fois qu’elle est atteinte.Otherwise, the target is executed every time it is hit.

L’exemple suivant montre un élément Target contenant un attribut Outputs avec la notation %(<ItemMetaDataName>).The following example shows a Target element that contains an Outputs attribute with the %(<ItemMetaDataName>) notation. MSBuildMSBuild divise la liste d’éléments Example en lots en fonction des métadonnées de l’élément Color et analyse les horodatages des fichiers de sortie pour chaque lot. will divide the Example item list into batches based on the Color item metadata, and analyze the timestamps of the output files for each batch. Si les sorties d’un lot ne sont pas à jour, la cible est exécutée.If the outputs from a batch are not up-to-date, the target is run. Sinon, la cible est ignorée.Otherwise, the target is skipped.

<Project  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

    <ItemGroup>  
        <Example Include="Item1">  
            <Color>Blue</Color>  
        </Example>  
        <Example Include="Item2">  
            <Color>Red</Color>  
        </Example>  
    </ItemGroup>  

    <Target Name="RunMyTask"  
        Inputs="@(Example)"  
        Outputs="%(Color)\MyFile.txt">  
        <MyTask  
            Sources = "@(Example)"  
            Output = "%(Color)\MyFile.txt"/>  
    </Target>  

</Project>  

Pour obtenir un autre exemple de traitement par lots des cibles, consultez Métadonnées d’élément dans le traitement par lots des cibles.For another example of target batching, see Item metadata in target batching.

Fonctions de propriété utilisant des métadonnéesProperty functions using metadata

Le traitement par lots peut être contrôlé par des fonctions de propriété qui incluent des métadonnées.Batching can be controlled by property functions that include metadata. Par exemple :For example,

$([System.IO.Path]::Combine($(RootPath),%(Compile.Identity)))

utilise Combine pour combiner un chemin de dossier racine avec un chemin d’élément de compilation.uses Combine to combine a root folder path with a Compile item path.

Les fonctions de propriété ne peuvent pas apparaître dans des valeurs de métadonnées.Property functions may not appear within metadata values. Par exemple :For example,

%(Compile.FullPath.Substring(0,3))

n’est pas autorisé.is not allowed.

Pour plus d’informations sur les fonctions de propriété, consultez Fonctions de propriété.For more information about property functions, see Property functions.

Voir aussiSee also

ItemMetadata, élément (MSBuild) ItemMetadata element (MSBuild)
Concepts MSBuild MSBuild concepts
Informations de référence sur MSBuild MSBuild reference
Concepts avancésAdvanced concepts