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 trueparametr , 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 Targetelementach. 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 ReturnsOutputs i atrybut. OutputsInputs 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 truewartość , 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>

Zobacz też