Partager via


Comment : traiter des cibles par lots en utilisant des métadonnées d'élément

Mise à jour : novembre 2007

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 collection 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

Comment : traiter des tâches par lots avec des métadonnées d'élément

Concepts

Traitement par lots de MSBuild

Référence

Target, élément (MSBuild)