Udostępnij za pośrednictwem


Obiekty docelowe w programie MSBuild

Cele grupowania zadań w określonej kolejności i proces kompilacji i być rozkładane na mniejsze jednostki.Na przykład jeden obiekt docelowy może usunąć wszystkie pliki w katalogu wyjściowego do przygotowania do budowy, podczas gdy inny kompiluje wejścia dla projektu i umieszcza je w pustego katalogu.Aby uzyskać więcej informacji na temat zadań, zobacz Zadania programu MSBuild.

Deklarując obiekty docelowe w pliku projektu

Obiekty docelowe są zadeklarowane w pliku projektu z Cel element.Na przykład następujący kod XML tworzy element docelowy o nazwie konstrukcja, która następnie wywołuje zadanie Csc typ kompilacji zapasu.

<Target Name="Construct">
    <Csc Sources="@(Compile)" />
</Target>

Jak program MSBuild właściwości można ponownie zdefiniować cele.Na przykład:

<Target Name="AfterBuild" >
    <Message Text="First occurrence" />
</Target>
<Target Name="AfterBuild" >
    <Message Text="Second occurrence" />
</Target>

Jeśli AfterBuild jest wykonywana, wyświetla tylko "drugie wystąpienie".

Miejsce docelowe-zamówienie

Obiekty docelowe są zamawiane, jeśli dane wejściowe do jednego celu zależy od danych wyjściowych innego obiektu docelowego.Istnieje kilka sposobów, aby określić kolejność w których cele uruchomić.

  • Cele początkowe

  • Domyślne elementy docelowe

  • Pierwszy element docelowy

  • Miejsce docelowe zależności

  • BeforeTargetsi AfterTargets (MSBuild 4.0)

Element docelowy nigdy nie działa dwa razy podczas kompilacji pojedynczej, nawet jeśli zależy kolejnych docelowej w kompilacji.Gdy uruchomiony jest obiektem docelowym, jego wkład do kompilacji zostało ukończone.

Szczegóły i więcej informacji na temat cel budowania zamówienia, zobacz Kolejność kompilowania obiektów docelowych.

Miejsce docelowe dozowania

Element docelowy może mieć Outputs atrybut, który określa metadane w postaci % (metadane).Jeśli tak, program MSBuild działa docelowy raz dla każdej wartości unikatowe metadane, grupowanie lub "Grupowanie" elementy, które mają wartość metadanych.Na przykład:

<ItemGroup>
    <Reference Include="System.Core">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Xml.Linq">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="Microsoft.CSharp">
      <RequiredTargetFramework>4.0</RequiredTargetFramework>
    </Reference>
</ItemGroup>
<Target Name="AfterBuild"
    Outputs="%(Reference.RequiredTargetFramework)">
    <Message Text="Reference:
      @(Reference->'%(RequiredTargetFramework)')" />
</Target>

partie towarów odniesienia przez ich metadane RequiredTargetFramework.Dane wyjściowe obiektu docelowego wygląda następująco:

Reference: 3.5;3.5
Reference: 4.0

Cel dozowania rzadko jest używany w prawdziwym buduje.Grupowanie zadań jest częściej.Aby uzyskać więcej informacji, zobacz Przetwarzanie wsadowe w programie MSBuild.

Przyrostowe kompilacje

Przyrostowe kompilacje są wersje, które są zoptymalizowane tak, że cele z plików wyjściowych, które są aktualne w odniesieniu do ich odpowiednich plików wejściowych nie są wykonywane.Element docelowy może mieć zarówno Inputs i Outputs atrybuty, wskazującą, jakie elementy cel wejściową i jakie elementy to produkuje jako dane wyjściowe.

Jeśli wszystkie elementy dane wyjściowe są aktualne, MSBuild pomija cel, co znacznie zwiększa szybkość kompilacji.Jest to nazywane przyrostowe kompilacji, miejsce docelowe.Jeśli tylko niektóre pliki są aktualne, MSBuild wykonuje docelowej bez aktualnych elementów.Jest to częściowe budować przyrostowe obiektu docelowego.Aby uzyskać więcej informacji, zobacz Kompilacje przyrostowe.

Zobacz też

Zadania

Porady: użycie tej samej wartości docelowej w wielu plikach projektów

Inne zasoby

Pojęcia dotyczące programu MSBuild