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.