Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los destinos deben ordenarse si la entrada de un destino depende de la salida de otro destino. Puede usar estos atributos para especificar el orden en el que se ejecutan los destinos:
. Este atributo especifica los destinos que se ejecutarán primero, incluso si se especifican destinos en la línea de comandos o en el atributo .
. Este atributo especifica qué destinos se ejecutan si no se especifica explícitamente un destino en la línea de comandos.
. Este atributo especifica destinos que se deben ejecutar antes de que este destino pueda ejecutarse.
y . Estos atributos especifican que este destino debe ejecutarse antes o después de los destinos especificados.
En general, no debe depender del orden de declaración para especificar qué tareas se ejecutan antes de otras tareas.
Un destino nunca se ejecuta dos veces durante una compilación, incluso si un destino posterior de la compilación depende de él. Una vez que se ha ejecutado un objetivo, se completa su contribución a la construcción.
Los destinos pueden tener un atributo . Si la condición especificada se evalúa como , el destino no se ejecuta y se considera omitido. Consulte el apartado sobre cómo determinar el orden de compilación de los objetivos para obtener más información sobre el comportamiento de los objetivos omitidos. Para obtener más información sobre las condiciones, vea Condiciones.
Destinos iniciales
El atributo del elemento Project especifica destinos que se ejecutarán primero, incluso si se especifican destinos en la línea de comandos o en el atributo . Los objetivos iniciales se usan normalmente para la comprobación de errores.
El valor del atributo puede ser una lista ordenada de destinos delimitada por punto y coma. En el ejemplo siguiente se especifica que el objetivo se ejecuta y, después, el objetivo se ejecuta.
<Project InitialTargets="Warm;Eject">
Los proyectos importados pueden tener sus propios atributos. Todos los objetivos iniciales se agregan y se ejecutan en orden.
Para obtener más información, vea Cómo: Especificar el destino que se va a compilar primero.
Destinos predeterminados
El atributo del elemento Project especifica qué objetivo u objetivos se compilan si no se especifica explícitamente un objetivo en una línea de comando.
El valor del atributo puede ser una lista ordenada de destinos predeterminados delimitada por punto y coma. En el ejemplo siguiente se especifica que el objetivo se ejecuta y, después, el objetivo se ejecuta.
<Project DefaultTargets="Clean;Build">
Puede invalidar los destinos predeterminados mediante el modificador -target en la línea de comandos. En el ejemplo siguiente se especifica que el objetivo se ejecuta y, después, el objetivo se ejecuta. Al especificar destinos de esta manera, se omiten los destinos predeterminados.
msbuild -target:Build;Report
Si se especifican los destinos iniciales y los predeterminados y, si no se especifica ningún destino de línea de comandos, MSBuild ejecuta primero los destinos iniciales y, a continuación, ejecuta los destinos predeterminados.
Los proyectos importados pueden tener sus propios atributos. El primer atributo encontrado determina qué destinos predeterminados se ejecutarán.
Para obtener más información, vea Cómo: Especificar el destino que se va a compilar primero.
Primer destino
Si no hay destinos iniciales, destinos predeterminados o destinos de línea de comandos, MSBuild ejecuta el primer destino que encuentra en el archivo del proyecto o en los archivos de proyecto importados.
Dependencias de destino
Los objetivos pueden describir las relaciones de dependencia mutuamente. El atributo indica que un destino depende de otros destinos. Por ejemplo
<Target Name="Serve" DependsOnTargets="Chop;Cook" />
indica a MSBuild que el objetivo depende del objetivo y del objetivo. MSBuild ejecuta el destino y, a continuación, ejecuta el destino antes de ejecutar el destino.
Nota:
Los destinos estándar del SDK definen una serie de propiedades que contienen la lista de destinos que son dependencias para ese destino (por ejemplo, , , etc.). Por ejemplo
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)">
Para personalizar un proyecto, puede invalidar las propiedades de DependsOn con destinos personalizados adicionales que amplían el proceso de compilación, como se describe en Extend el proceso de compilación de Visual Studio.
BeforeTargets y AfterTargets
Puede especificar el orden de destino mediante los atributos y .
Tenga en cuenta el siguiente guion.
<Project DefaultTargets="Compile;Link">
<Target Name="Compile">
<Message Text="Compiling" />
</Target>
<Target Name="Link">
<Message Text="Linking" />
</Target>
</Project>
Para crear un destino intermedio que se ejecute después del destino, pero antes del destino, agregue el siguiente destino en cualquier parte del elemento.
<Target Name="Optimize" AfterTargets="Compile">
<Message Text="Optimizing" />
</Target>
Como alternativa, especifique el orden como
<Target Name="Optimize" BeforeTargets="Link">
<Message Text="Optimizing" />
</Target>
No es útil especificar ambos y en el mismo destino. Como se describe en la sección siguiente, solo el primer destino encontrado hará que se ejecute el nuevo destino.
Determinar el orden de construcción objetivo
MSBuild determina el orden de construcción objetivo de la siguiente manera:
se ejecutan objetivos.
Los destinos especificados en la línea de comandos por el modificador -target se ejecutan. Si no especifica ningún destino en la línea de comandos, entonces se ejecutan los destinos. Si ninguno de los dos está presente, se ejecuta el primer objetivo encontrado.
Se evalúa el atributo del de destino. Si el atributo está presente y se evalúa como , el destino no se ejecuta y se considera omitido.
Otros destinos que enumeran el destino condicional en o se siguen ejecutando en el orden prescrito, independientemente del resultado de la condición.
Nota:
No se considera ejecutado un objetivo omitido. Si otro destino lo solicita más adelante y la condición ahora se evalúa como , el destino se ejecutará en ese momento. Sin embargo, los procesos que ya se ejecutaron para el objetivo omitido originalmente no se volverán a ejecutar.
Antes de ejecutar o omitir el destino, se ejecutan sus destinos, a menos que el atributo se aplique al destino y se evalúe como .
Nota:
Un objetivo se considera omitido si no se ejecuta porque sus elementos de salida son up-to-date (consulte la sección de compilación incremental). Esta comprobación se realiza justo antes de ejecutar las tareas dentro del destino y no afecta al orden de ejecución de los destinos.
Antes de ejecutar o omitir el destino, se ejecuta cualquier otro destino que muestre el destino en un atributo.
Antes de ejecutar el destino, se comparan sus atributos y atributos. Si MSBuild determina que los archivos de salida están desactualizados con respecto al archivo o los archivos de entrada correspondientes, entonces MSBuild ejecuta el objetivo. De lo contrario, MSBuild salta el objetivo.
Una vez ejecutado o omitido el destino, se ejecuta cualquier otro destino que lo muestre en un atributo.
Contenido relacionado
- Objetivos