zadania programu MSBuild

Platforma kompilacji wymaga możliwości wykonywania dowolnej liczby akcji podczas procesu kompilacji. Program MSBuild używa zadań do wykonywania tych akcji. Zadanie to jednostka kodu wykonywalnego używanego przez program MSBuild do wykonywania niepodzielnych operacji kompilacji.

Logika zadania

Format pliku projektu XML programu MSBuild nie może w pełni wykonywać operacji kompilacji samodzielnie, więc logika zadań musi być zaimplementowana poza plikiem projektu.

Logika wykonywania zadania jest implementowana jako klasa .NET, która implementuje ITask interfejs zdefiniowany w Microsoft.Build.Framework przestrzeni nazw.

Klasa zadań definiuje również parametry wejściowe i wyjściowe dostępne dla zadania w pliku projektu. Wszystkie publiczne właściwości niestacjonalne nieskonstrakcji uwidocznione przez klasę zadań mogą mieć wartości w pliku projektu, umieszczając odpowiedni atrybut o tej samej nazwie w elemecie Task i ustawiając jego wartość, jak pokazano w przykładach w dalszej części tego artykułu.

Możesz napisać własne zadanie, tworząc klasę zarządzaną, która implementuje ITask interfejs. Aby uzyskać więcej informacji, zobacz Pisanie zadań.

Wykonywanie zadania z pliku projektu

Przed wykonaniem zadania w pliku projektu należy najpierw zamapować typ w zestawie, który implementuje zadanie na nazwę zadania za pomocą elementu UsingTask . Dzięki temu program MSBuild wie, gdzie szukać logiki wykonywania zadania, gdy znajdzie go w pliku projektu.

Aby wykonać zadanie w pliku projektu MSBuild, utwórz element o nazwie zadania jako element podrzędny Target elementu. Jeśli zadanie akceptuje parametry, są one przekazywane jako atrybuty elementu.

Listy elementów i właściwości programu MSBuild mogą być używane jako parametry. Na przykład następujący kod wywołuje MakeDir zadanie i ustawia wartość Directories właściwości MakeDir obiektu równą wartości BuildDir właściwości właściwości :

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

Zadania mogą również zwracać informacje do pliku projektu, które mogą być przechowywane w elementach lub właściwościach do późniejszego użycia. Na przykład poniższy kod wywołuje Copy zadanie i przechowuje informacje z CopiedFiles właściwości output na SuccessfullyCopiedFiles liście elementów.

<Target Name="CopyFiles">
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFolder="@(MyDestFolder)">
        <Output
            TaskParameter="CopiedFiles"
            ItemName="SuccessfullyCopiedFiles"/>
     </Copy>
</Target>

Uwzględnione zadania

Program MSBuild jest dostarczany z wieloma zadaniami, takimi jak Copy, który kopiuje pliki, MakeDir, który tworzy katalogi i Csc, który kompiluje pliki kodu źródłowego języka C#. Aby uzyskać pełną listę dostępnych zadań i informacji o użyciu, zobacz Informacje o zadaniu.

Przesłanianie zadań

Program MSBuild wyszukuje zadania w kilku lokalizacjach. Pierwsza lokalizacja znajduje się w plikach z rozszerzeniem .OverrideTasks przechowywanym w katalogu MSBuild. Zadania w tych plikach zastępują wszystkie inne zadania o tych samych nazwach, w tym zadania w pliku projektu. Druga lokalizacja znajduje się w pliku projektu i jego importach. Jeśli zadanie nie jest zdefiniowane w projekcie, zostanie wyszukane w domyślnych zadaniach programu MSBuild zdefiniowanych w .tasks pliku w katalogu MSBuild.