Element docelowy (MSBuild)
Zawiera zestaw zadań programu MSBuild do wykonania sekwencyjnie.
<Cel projektu><>
Składnia
<Target Name="Target Name"
Inputs="Inputs"
Outputs="Outputs"
Returns="Returns"
KeepDuplicateOutputs="true/false"
BeforeTargets="Targets"
AfterTargets="Targets"
DependsOnTargets="DependentTarget"
Condition="'String A' == 'String B'"
Label="Label">
<Task>... </Task>
<PropertyGroup>... </PropertyGroup>
<ItemGroup>... </ItemGroup>
<OnError... />
</Target>
Atrybuty i elementy
W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.
Atrybuty
Atrybut | opis |
---|---|
Name |
Atrybut wymagany. Nazwa elementu docelowego. Nazwa docelowa może zawierać dowolny znak z wyjątkiem $@()%*?. . |
Condition |
Atrybut opcjonalny. Warunek do obliczenia. Jeśli warunek zwróci wartość false , element docelowy nie wykona treści elementu docelowego ani żadnych obiektów docelowych ustawionych w atrybucie DependsOnTargets . Aby uzyskać więcej informacji na temat warunków, zobacz Warunki. |
Inputs |
Atrybut opcjonalny. Pliki, które tworzą dane wejściowe w tym obiekcie docelowym. Wiele plików jest rozdzielonych średnikami. Znaczniki czasu plików zostaną porównane ze znacznikami czasu plików w programie, Outputs aby określić, czy Target plik jest aktualny. Aby uzyskać więcej informacji, zobacz Incremental builds (Instrukcje: tworzenie przyrostowe i przekształcenia). |
Outputs |
Atrybut opcjonalny. Pliki, które tworzą dane wyjściowe w tym obiekcie docelowym. Wiele plików jest rozdzielonych średnikami. Znaczniki czasu plików zostaną porównane ze znacznikami czasu plików w programie, Inputs aby określić, czy Target plik jest aktualny. Aby uzyskać więcej informacji, zobacz Incremental builds (Instrukcje: tworzenie przyrostowe i przekształcenia). |
Returns |
Atrybut opcjonalny. Zestaw elementów, które zostaną udostępnione do zadań, które wywołują ten element docelowy, na przykład zadania programu MSBuild. Wiele obiektów docelowych jest rozdzielonych średnikami. Jeśli obiekty docelowe w pliku nie Returns mają atrybutów, zamiast tego są używane atrybuty Outputs. |
KeepDuplicateOutputs |
Opcjonalny atrybut logiczny. Jeśli true parametr , są rejestrowane wiele odwołań do tego samego elementu w zwracaniu elementu docelowego. Domyślnie ten atrybut to false . |
BeforeTargets |
Atrybut opcjonalny. Rozdzielana średnikami lista nazw docelowych. Po określeniu wskazuje, że ten element docelowy powinien zostać uruchomiony przed określonym elementem docelowym lub docelowym. Dzięki temu autor projektu rozszerza istniejący zestaw obiektów docelowych bez bezpośredniego modyfikowania ich. Aby uzyskać więcej informacji, zobacz Target build order (Kolejność kompilacji docelowej). |
AfterTargets |
Atrybut opcjonalny. Rozdzielana średnikami lista nazw docelowych. Po określeniu wskazuje, że ten element docelowy powinien być uruchamiany po określonym obiekcie docelowym lub docelowym. Dzięki temu autor projektu rozszerza istniejący zestaw obiektów docelowych bez bezpośredniego modyfikowania ich. Aby uzyskać więcej informacji, zobacz Target build order (Kolejność kompilacji docelowej). |
DependsOnTargets |
Atrybut opcjonalny. Cele, które należy wykonać, zanim będzie można wykonać ten cel lub może wystąpić analiza zależności najwyższego poziomu. Wiele obiektów docelowych jest rozdzielonych średnikami. |
Label |
Atrybut opcjonalny. Identyfikator, który może identyfikować lub porządkować elementy systemu i użytkownika. |
Elementy podrzędne
Element | opis |
---|---|
Zadanie | Tworzy i wykonuje wystąpienie zadania MSBuild. W obiekcie docelowym może występować zero lub więcej zadań. |
Propertygroup | Zawiera zestaw elementów zdefiniowanych przez Property użytkownika. Począwszy od programu .NET Framework 3.5, Target element może zawierać PropertyGroup elementy. |
Itemgroup | Zawiera zestaw elementów zdefiniowanych przez Item użytkownika. Począwszy od programu .NET Framework 3.5, Target element może zawierać ItemGroup elementy. Aby uzyskać więcej informacji, zobacz Elementy. |
Onerror | Powoduje wykonanie co najmniej jednego miejsca docelowego ContinueOnError , jeśli atrybutem jest ErrorAndStop (lub false ) dla zadania, które zakończyło się niepowodzeniem. Może istnieć zero lub więcej OnError elementów w obiekcie docelowym. Jeśli OnError elementy są obecne, muszą być ostatnimi elementami w elemecie Target .Aby uzyskać informacje o atrybucie ContinueOnError , zobacz Task element (MSBuild). |
Elementy nadrzędne
Element | opis |
---|---|
Projekt | Wymagany element główny pliku projektu MSBuild. |
Uwagi
Pierwszy element docelowy do wykonania jest określony w czasie wykonywania. Obiekty docelowe mogą mieć zależności od innych obiektów docelowych. Na przykład element docelowy wdrożenia zależy od celu kompilacji. Aparat MSBuild wykonuje zależności w kolejności, w której są wyświetlane w atrybucie od lewej DependsOnTargets
do prawej. Aby uzyskać więcej informacji, zobacz Cele.
Program MSBuild jest zależny od kolejności importu, a ostatnia definicja obiektu docelowego z określonym Name
atrybutem to używana definicja.
Obiekt docelowy jest wykonywany tylko raz podczas kompilacji, nawet jeśli więcej niż jeden element docelowy ma na nim zależność.
Jeśli element docelowy zostanie pominięty, ponieważ jego Condition
atrybut daje wartość false
, nadal można go wykonać, jeśli zostanie wywołany w dalszej części kompilacji, a jego Condition
atrybut daje w tym czasie wartość .true
Przed msBuild 4 Target
zwrócił wszystkie elementy, które zostały określone w atrybucie Outputs
. W tym celu program MSBuild musiał zarejestrować te elementy w przypadku, gdy zadania później w kompilacji zażądały ich. Ponieważ nie było możliwości wskazania, które obiekty docelowe miały dane wyjściowe, których potrzebują osoby wywołujące, program MSBuild zgromadził wszystkie elementy ze Outputs
wszystkich elementów we wszystkich wywołanych Target
elementach. Prowadzi to do problemów ze skalowaniem kompilacji, które miały dużą liczbę elementów wyjściowych.
Jeśli użytkownik określi Returns
element w dowolnym Target
elemecie w projekcie, tylko te Target
, które mają Returns
atrybut rejestrują te elementy.
Element Target
może zawierać zarówno atrybut, jak Returns
Outputs
i atrybut. Outputs
Inputs
służy do określania, czy element docelowy jest aktualny. Returns
, jeśli jest obecny, zastępuje wartość , Outputs
aby określić, które elementy są zwracane do obiektów wywołujących. Jeśli Returns
nie jest obecny, zostanie udostępniony obiektom wywołującym z Outputs
wyjątkiem opisanego wcześniej przypadku.
Przed msBuild 4 za każdym razem, Target
gdy dołączono wiele odwołań do tego samego elementu w jego Outputs
, te zduplikowane elementy zostaną zarejestrowane. W bardzo dużych kompilacjach, które miały dużą liczbę danych wyjściowych i wiele współzależności projektu, spowodowałoby to zmarnowanie dużej ilości pamięci, ponieważ zduplikowane elementy nie były używane. KeepDuplicateOutputs
Gdy atrybut jest ustawiony na true
wartość , te duplikaty są rejestrowane.
Przykład
Poniższy przykładowy kod przedstawia Target
element, który wykonuje Csc
zadanie.
<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
<Csc Sources="@(CSFile)"
TargetType="library"
Resources="@(CompiledResources)"
EmitDebugInformation="$(includeDebugInformation)"
References="@(Reference)"
DebugType="$(debuggingType)" >
<Output TaskParameter="OutputAssembly"
ItemName="FinalAssemblyName" />
</Csc>
</Target>