Kolejność kompilowania obiektów docelowych
Obiekty docelowe są zamawiane, jeśli dane wejściowe do jednego celu zależy od danych wyjściowych innego obiektu docelowego.Aby określić kolejność uruchamiania obiektów docelowych, można użyć tych atrybutów:
InitialTargets.To Project atrybut określa cele, które będą uruchamiane po raz pierwszy, nawet jeśli obiekty docelowe są określone w wierszu polecenia lub w DefaultTargets atrybut.
DefaultTargets.To Project atttribute Określa, które obiekty docelowe są uruchamiane Jeśli element docelowy nie jest jawnie określony w wierszu polecenia.
DependsOnTargets.To Target atrybut określa cele, które należy uruchomić przed cel ten można uruchomić.
BeforeTargets i AfterTargets.Te Target atrybuty określają, że cel ten ma być uruchomione przed lub po sprecyzowanych celów (MSBuild 4.0).
Element docelowy nie jest uruchomiony dwa razy podczas kompilacji, nawet jeżeli późniejsze miejsce docelowe w kompilacji zależy od tego.Po uruchomieniu tarczę swój wkład do kompilacji zostało ukończone.
Obiekty docelowe może mieć Condition atrybut.Jeśli określony warunek ma false, obiekt docelowy nie jest wykonywany i nie ma wpływu na budowę.Aby uzyskać więcej informacji o warunkach, zobacz Warunki MSBuild.
Celów początkowych
InitialTargets Atrybut Projekt element określa cele, które będą uruchamiane po raz pierwszy, nawet jeśli obiekty docelowe są określone w wierszu polecenia lub w DefaultTargets atrybut.Początkowe obiekty docelowe są zazwyczaj używane do kontroli błędów.
Wartość InitialTargets atrybut może być rozdzielone średnikami, uporządkowana lista obiektów docelowych.W następującym przykładzie określono, że Warm cel działa, a następnie Eject cel działa.
<Project InitialTargets="Warm;Eject" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
Zaimportowane projekty mogą mieć swoje własne InitialTargets atrybuty.Wszystkie cele początkowe są łączone ze sobą i uruchamiane w kolejności.
Aby uzyskać więcej informacji, zobacz Porady: określanie pierwszego obiektu docelowego do kompilacji.
Domyślne elementy docelowe
DefaultTargets Atrybut Projekt element określa, które cel lub cele są wbudowane Jeśli element docelowy nie jest jawnie określony w wierszu polecenia.
Wartość DefaultTargets atrybut może być rozdzielone średnikami, uporządkowaną listę domyślne elementy docelowe.W następującym przykładzie określono, że Clean cel działa, a następnie Build cel działa.
<Project DefaultTargets="Clean;Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
Można zastąpić domyślne elementy docelowe przy użyciu /target przełączyć się w wierszu polecenia.W następującym przykładzie określono, że Build cel działa, a następnie Report cel działa.Po określeniu celów w ten sposób wszelkie domyślne elementy docelowe są ignorowane.
msbuild /target:Build;Report
Jeśli celów początkowych i domyślne elementy docelowe są określone, a nie z wiersza polecenia obiekty docelowe są określone, program MSBuild po raz pierwszy uruchamia celów początkowych, a następnie uruchamia domyślne elementy docelowe.
Zaimportowane projekty mogą mieć swoje własne DefaultTargets atrybuty.Pierwszy DefaultTargets napotkano atrybut określa domyślny, który uruchomi obiektów docelowych.
Aby uzyskać więcej informacji, zobacz Porady: określanie pierwszego obiektu docelowego do kompilacji.
Pierwszy element docelowy
Jeśli nie ma żadnych celów początkowych, domyślne elementy docelowe lub cele wiersza polecenia, a następnie pierwszy element docelowy jest uruchamiany program MSBuild napotka w pliku projektu lub jakiegokolwiek projektu, importowane pliki.
Miejsce docelowe zależności
Cele można opisać relacji zależności między sobą.DependsOnTargets Atrybut wskazuje, że element docelowy zależy od innych elementów docelowych.Na przykład:
<Target Name="Serve" DependsOnTargets="Chop;Cook" />
Program MSBuild mówi, że Serve zależy od docelowej Chop docelowych i Cook miejsce docelowe.Uruchamia program MSBuild Chop miejsce docelowe, a następnie uruchamia Cook miejsce docelowe, przed uruchomieniem Serve miejsce docelowe.
Przed innymi obiektami i po obiektów docelowych
W wersji 4.0 programu MSBuild można określić kolejność wartości docelowych za pomocą BeforeTargets i AfterTargets atrybuty.
Należy rozważyć następujący skrypt.
<Project DefaultTargets="Compile;Link" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Compile">
<Message Text="Compiling" />
</Target>
<Target Name="Link">
<Message Text="Linking" />
</Target>
</Project>
Aby utworzyć cel pośredni Optimize który jest uruchamiany po Compile cel, lecz przed Link cel, Dodaj następujące celu gdziekolwiek w Project element.
<Target Name="Optimize"
AfterTargets="Compile" BeforeTargets="Link">
<Message Text="Optimizing" />
</Target>
Określenie kolejności kompilacji docelowej
MSBuild określa kolejność wartości docelowych kompilacji się następujące zmiany:
InitialTargetsobiekty docelowe są uruchamiane.
Cele określone w wierszu polecenia przez /target przełącznika są uruchamiane.Jeśli określisz żadne obiekty docelowe w wierszu polecenia, a następnie DefaultTargets obiekty docelowe są uruchamiane.Jeśli żadna nie jest obecny, pierwszy napotkał element docelowy jest uruchamiany.
Condition Atrybut obiektu docelowego jest oceniany.Jeśli Condition atrybut jest obecny i daje w wyniku false, obiekt docelowy nie jest wykonywany i nie ma dalszych wpływu na budowę.
Przed wykonaniem elementu docelowego, jej DependsOnTargets obiekty docelowe są uruchamiane.
Przed wykonaniem tarczę dowolnego miejsce docelowe zawierającą listę go w BeforeTargets atrybut jest uruchamiany.
Przed wykonaniem elementu docelowego, jej Inputs atrybutu i Outputs atrybutu są porównywane.Jeśli program MSBuild ustali, że wszelkie pliki wyjściowe są nieaktualne w odniesieniu do odpowiedniego pliku wejściowego lub pliki, a następnie MSBuild wykonuje obiektu docelowego.W przeciwnym razie program MSBuild pomija obiektu docelowego.
Po obiektem docelowym jest wykonywane lub zostało pominięte, dowolnego obiektu docelowego, który jest wyświetlany w AfterTargets atrybut jest uruchamiany.