Cómo: Procesar destinos por lotes utilizando metadatos de elementos

Actualización: noviembre 2007

MSBuild puede realizar análisis de dependencias de las entradas y los resultados de un destino de compilación. Si se determina que las entradas y resultados del destino están actualizados, el destino se omite y la generación continúa. Los elementos Target usan los atributos Inputs y Outputs para especificar los elementos que se deben inspeccionar durante el análisis de dependencias.

Si un destino contiene una tarea que usa elementos procesados por lotes como entradas o resultados, el elemento Target del destino deberá utilizar el procesamiento por lotes en sus atributos Inputs o Outputs para permitir que MSBuild omita los lotes de elementos que ya estén actualizados.

Procesar destinos por lotes

El ejemplo siguiente contiene una colección de elementos denominada Res que se divide en dos lotes basándose en los metadatos de elementos Culture. Cada uno de estos lotes se pasa a la tarea AL, que crea un ensamblado de salida para cada lote. Mediante el procesamiento por lotes en el atributo Outputs del elemento Target, MSBuild puede determinar si cada lote individual está actualizado antes de ejecutar el destino. Si no se utiliza el procesamiento por lotes de destinos, la tarea ejecuta ambos lotes de elementos cada vez que se ejecute el destino.

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

Vea también

Tareas

Cómo: Generar versiones incrementalmente

Cómo: Procesar tareas por lotes utilizando metadatos de elementos

Conceptos

Procesamiento por lotes de MSBuild

Referencia

Elemento Target (MSBuild)