Partager via


Métadonnées d'éléments dans le traitement par lots de cibles

MSBuild a la capacité d'exécuter une analyse de dépendance sur les entrées et les sorties d'une cible de génération. S'il est déterminé que les entrées ou les sorties de la cible sont à jour, la cible sera ignorée et la génération aura lieu. Les éléments Target utilisent les attributs Inputs et Outputs pour spécifier les éléments à inspecter pendant l'analyse de dépendance.

Si une cible contient une tâche qui utilise des éléments traités par lots comme entrées ou sorties, l'élément Target de la cible doit utiliser le traitement par lots dans ses attributs Inputs ou Outputs pour permettre à MSBuild d'ignorer les lots d'éléments qui sont déjà à jour.

Traitement par lots de cibles

L'exemple suivant contient une liste d'éléments nommée Res qui est divisée en deux lots basés sur les métadonnées d'élément Culture. Chacun de ces lots est passé dans la tâche AL, qui crée un assembly de sortie pour chaque lot. En utilisant le traitement par lot sur l'attribut Outputs de l'élément Target, MSBuild peut déterminer si chacun des lots individuels est à jour avant d'exécuter la cible. Sans utiliser le traitement par lots des cibles, les deux lots d'éléments seraient exécutés tâche par tâche chaque fois que la cible est exécutée.

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

    <ItemGroup>
        <Res Include="Strings.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Strings.jp.resources">
            <Culture>jp</Culture>
        </Res>
        <Res Include="Menus.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Dialogs.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Dialogs.jp.resources">
            <Culture>jp</Culture>
        </Res>
        <Res Include="Menus.jp.resources">
            <Culture>jp</Culture>
        </Res>
    </ItemGroup>

    <Target Name="Build"
        Inputs="@(Res)"
        Outputs="%(Culture)\MyApp.resources.dll">
        
        <AL Resources="@(Res)"
            TargetType="library"
            OutputAssembly="%(Culture)\MyApp.resources.dll"

    </Target>

</Project>

Voir aussi

Tâches

Comment : effectuer des générations incrémentielles

Référence

Target, élément (MSBuild)

Concepts

Traitement par lots de MSBuild

Métadonnées d'éléments dans le traitement par lots de tâches