visual vista tutorial temas tag studio previa para iconos español configurar code closing brackethighlighter visual-studio-2010 msbuild msbuild-task visual-studio-project

visual-studio-2010 - vista - visual studio code highlight closing tag



¿Orden de tareas AfterBuild en proyectos de Visual Studio...? (2)

He definido varias AfterBuild - Tareas en mi proyecto de Visual Studio con diferentes condiciones:

<Target Name="AfterBuild" Condition="''$(Configuration)''==''FinalBuilder''"> <Message Importance="high" Text="--- AfterBuild for FinalBuilder ---" /> </Target> <Target Name="AfterBuild" Condition="''$(MvcBuildViews)''==''true''"> <Message Importance="high" Text="--- AfterBuild for MvcBuildViews ---" /> </Target>

Pero solo el último se ejecuta si la condición coincide. Si elijo la configuración de FinalBuilder, las tareas de AfterBuild se ignoran y no se ejecutan. Si cambio el orden de los Objetivos en los archivos del proyecto (Condición = "''$ (Configuración) =='' FinalBuilder ''" como el último), se ejecuta AfterBuild para FinalBuilder-Configuration pero se ignora el de MvcBuildViews.

¿Es importante el orden del objetivo? ¿Solo se toma en cuenta la última tarea de AfterBuild? ¿O cómo puedo definir diferentes tareas de AfterBuild con diferentes condiciones?

Gracias

Konrad


El único segundo se ejecuta porque fue redefinido. Consulte MSDN (Declaración de destinos en el capítulo del archivo de proyecto).

Debería usar solo un objetivo de AfterBuild en su archivo de proyecto como este:

<Target Name="AfterBuild" > <Message Condition="''$(MvcBuildViews)''==''true''" Importance="high" Text="--- AfterBuild for MvcBuildViews ---" /> <Message Condition="''$(Configuration)''==''FinalBuilder''" Importance="high" Text="--- AfterBuild for FinalBuilder ---" /> </Target>

EDITAR: O utilizar la tarea CallTarget :

<Target Name="AfterBuild" > <CallTarget Condition="''$(MvcBuildViews)''==''true''" Targets="MvcBuildTarget" /> <CallTarget Condition="''$(Configuration)''==''FinalBuilder''" Targets="FinalBuilderTarget" /> </Target> <Target Name="MvcBuildTarget"> <Message Importance="high" Text="--- AfterBuild for MvcBuildViews ---" /> </Target> <Target Name="FinalBuilderTarget" > <Message Importance="high" Text="--- AfterBuild for FinalBuilder ---" /> </Target>


Si realmente necesita ejecutar varias tareas de AfterBuild (este puede ser el caso, por ejemplo, si necesita diferentes conjuntos de entrada y salida para cada tarea), puede utilizar DependsOnTarget para hacer que AfterBuild dependa de todas ellas:

<Target Name="AfterBuild1" Inputs="stuff" Outputs="stuff"> <Message Text="Running first after build task." Importance="high" /> <Exec Command="stuff" /> </Target> <Target Name="AfterBuild2" Inputs="other stuff" Outputs="other stuff"> <Message Text="Running other after build task." Importance="high" /> <Exec Command="stuff" /> </Target> <Target Name="AfterBuild" DependsOnTargets="AfterBuild1;AfterBuild2" />

Si necesita restringir su orden, solo haga que AfterBuild2 dependa de AfterBuild1 con DependsOnTargets="AfterBuild1" .