Szukaj…


Uwagi

Z MSDN: docelowa kolejność kompilacji

Określanie docelowej kolejności kompilacji

MSBuild określa docelową kolejność kompilacji w następujący sposób:

  1. Cele InitialTargets są uruchamiane.
  2. Cele określone w wierszu poleceń za pomocą przełącznika / target są uruchamiane. Jeśli nie określisz żadnych celów w wierszu poleceń, uruchamiane są cele DefaultTargets. Jeśli żaden z nich nie jest obecny, uruchamiany jest pierwszy napotkany cel.
  3. Atrybut Warunek celu jest oceniany. Jeśli atrybut Warunek jest obecny i ma wartość false, cel nie jest wykonywany i nie ma dalszego wpływu na kompilację.
  4. Przed wykonaniem celu uruchamiane są jego cele DependsOnTargets.
  5. Przed wykonaniem celu uruchamiany jest każdy cel, który zawiera go w atrybucie BeforeTargets.
  6. Przed wykonaniem celu porównywany jest jego atrybut Wejścia i atrybut Wyjścia. Jeśli MSBuild stwierdzi, że jakiekolwiek pliki wyjściowe są nieaktualne w stosunku do odpowiedniego pliku lub plików wejściowych, wówczas MSBuild wykonuje cel. W przeciwnym razie MSBuild pomija cel.
  7. Po wykonaniu lub pominięciu celu uruchamiany jest każdy cel, który zawiera go w atrybucie AfterTargets.

DependsOnTargets

Definiowanie sekwencji celów ( Target1 , następnie Target2 ), które musi wykonywać przed Target3 . Zauważ, że żądanie wykonania dla Target3 jest wymagane, aby spowodować Target1 i Target2 do wykonania.

<Target Name="Target3" DependsOnTargets="Target1;Target2">
</Target>

<Target Name="Target2">
</Target> 

<Target Name="Target1">
</Target> 

AfterTargets

Zdefiniuj cel ( Target1 ), dla którego żądanie wykonania spowoduje, że Target2 zostanie później wykonany.

<Target Name="Target2" AfterTargets="Target1">
</Target> 

<Target Name="Target1">
</Target> 

BeforeTargets

Zdefiniuj cel ( Target2 ), dla którego żądanie wykonania spowoduje wcześniejsze wykonanie Target1 .

<Target Name="Target2">
</Target> 

<Target Name="Target1" BeforeTargets="Target2">
</Target> 


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow