Zadanie programu MSBuild
Buduje MSBuild projekty z innego MSBuild projektu.
Parametry
W poniższej tabeli opisano parametry MSBuild zadania.
Parametr |
Opis |
---|---|
BuildInParallel |
Opcjonalny Boolean parametru. Jeśli true, projekty, określone w Projects parametr są wbudowane równolegle, jeśli jest to możliwe.Wartością domyślną jest false. |
Projects |
Wymagany ITaskItem[] parametru. Określa pliki projektu na budowę. |
Properties |
Opcjonalny String parametru. Rozdzielaną średnikami listę par nazwa/wartość właściwości globalnych właściwości stosowane do projektu podrzędnego.Po określeniu tego parametru jest funkcjonalnie równoważne ustawieniu właściwości, które mają /property przełączanie podczas konstruowania z MSBuild.exe.Na przykład: Properties="Configuration=Debug;Optimize=$(Optimize)" Podczas przekazywania właściwości do projektu za pośrednictwem Properties parametr, MSBuild tworzy nowe wystąpienie projektu, nawet jeśli plik projektu został już załadowany.Podczas tworzenia nowego wystąpienia programu project MSBuild traktuje ją jako inny projekt, który ma inne właściwości globalnych i które mogą być budowane równolegle z innymi wystąpieniami projektu.Na przykład konfiguracja wersji można zbudować w tym samym czasie jako Konfiguracja debugowania. |
RebaseOutputs |
Opcjonalny Boolean parametru. Jeśli true, względne ścieżki docelowej wyjście towary w projektach, zbudowany mieć ich ścieżki dopasowana tak, by w stosunku do wywołującego projektu.Wartością domyślną jest false. |
RemoveProperties |
Opcjonalny String parametru. Określa zestaw właściwości globalne, aby usunąć. |
RunEachTargetSeparately |
Opcjonalny Boolean parametru. Jeśli true, MSBuild zadanie wywołuje każdego obiektu docelowego, na liście przekazany do MSBuild po kolei, a nie w tym samym czasie.Ustawienie tego parametru na true gwarantuje, że następne elementy docelowe są wywoływane, nawet jeśli poprzednio wywoływanego obiektów docelowych nie powiodło się.W przeciwnym razie błąd kompilacji zatrzyma powołanie się na wszystkie następne elementy docelowe.Wartością domyślną jest false. |
SkipNonexistentProjects |
Opcjonalny Boolean parametru. Jeśli true, plików projektów, które nie istnieją na dysku zostaną pominięte.W przeciwnym razie takie projekty spowoduje błąd. |
StopOnFirstFailure |
Opcjonalny Boolean parametru. Jeśli true, gdy jeden z projektów nie można zbudować, powstanie nie więcej projektów.Obecnie to nie jest obsługiwana podczas konstruowania równolegle (z wielu procesorów). |
TargetAndPropertyListSeparators |
Opcjonalny String[] parametru. Określa listę cele i właściwości jako Project metadanych elementu).Separatory będzie un-escaped przed ich przetworzeniem.e.g. % 3B (zbiegły ";") będą traktowane tak, jakby był on un-escaped ";". |
TargetOutputs |
Opcjonalny ITaskItem[] parametr wyjściowy tylko do odczytu. Zwraca wszystkie pliki projektu wyjścia, wbudowany obiektów docelowych.Tylko wyjść z obiektami docelowymi, które zostały określone są zwracane, nie wszystkie wyjścia, które mogą istnieć na cele, które zależą od elementów docelowych. TargetOutputs Parametr zawiera również następujące metadane:
Uwaga
Aby zidentyfikować wyjścia z każdego pliku projektu lub koncentruje się oddzielnie, uruchom MSBuild zadanie oddzielnie dla każdego pliku projektu lub docelowej.Po uruchomieniu MSBuild zadanie tylko raz, aby utworzyć wszystkie pliki projektu, wyjść wszystkie cele są gromadzone w jednej tablicy.
|
Targets |
Opcjonalny String parametru. Określa miejsce docelowe lub cele zbudować w plikach programu project.Użyj średnika lista nazw docelowych.Jeżeli żadne obiekty docelowe są określone w MSBuild zadanie, powstają domyślne elementy docelowe określone w plikach programu project.
Uwaga
Elementy docelowe muszą występować w wszystkie pliki projektu.Jeśli tego nie zrobi, wystąpi błąd kompilacji.
|
ToolsVersion |
Opcjonalny String parametru. Określa ToolsVersion do użycia podczas tworzenia projektów przekazany do tego zadania. Umożliwia MSBuild zadanie zbudować projekt, który jest przeznaczony dla innej wersji programu .NET Framework niż określona w projekcie.Valid values are 2.0, 3.0 and 3.5.Wartością domyślną jest 3.5. |
UnloadProjectsOnCompletion |
Opcjonalny Boolean parametru. Jeśli true, projekt będzie zwolniony po zakończeniu operacji. |
UseResultsCache |
Opcjonalny Boolean parametru. Jeśli true, zbuforowane wartości są zwracane, jeśli jest obecna.Jeśli theMSBuild zadanie jest uruchamiane, jego wynikiem będą buforowane w zakresie (ProjectFileName, GlobalProperties) [TargetNames] jako lista elementów kompilacji |
Uwagi
Oprócz parametrów wymienionych powyżej, to zadanie dziedziczy parametry z TaskExtension klasa, która sama dziedziczy z Task klasy.Aby uzyskać listę tych dodatkowych parametrów i ich opisy, zobacz Klasa bazowa TaskExtension.
W przeciwieństwie do, za pomocą Zadanie Exec zacząć MSBuild.exe, to zadanie używa tego samego MSBuild proces budowania dziecka projektów.Lista cele już wbudowane, które można pominąć dzieli się pomiędzy buduje nadrzędne i podrzędne.To zadanie jest również szybciej, ponieważ żadna nowa MSBuild proces jest tworzony.
To zadanie może przetwarzać, nie tylko pliki projektu, ale także pliki rozwiązania.
Żadna konfiguracja, która jest wymagana przez MSBuild Aby włączyć projektów zbudować w tym samym czasie, nawet jeśli konfiguracja obejmuje zdalnego infrastruktury (na przykład, portów, protokołów, limity czasu, liczbę ponownych prób i tak dalej), należy dokonać można konfigurować przy użyciu pliku konfiguracji.Jeśli to możliwe, pozycje konfiguracji powinny mieć możliwość można określić jako parametry zadania na MSBuild zadania.
Począwszy od MSBuild 3.5, roztwór projekty teraz powierzchni TargetOutputs ze wszystkich podprojektów opiera się ona.
Przenoszenie właściwości do projektów
W wersjach MSBuild przed MSBuild 3.5, omijając różne zestawy właściwości do różnych projektów, wymienionych w MSBuild element został stanowi poważne wyzwanie.Jeśli użyto atrybutu właściwości z Zadanie programu MSBuild, a następnie ustawienie jego został zastosowany do wszystkich projektów, o ile nie zostanie batched w trakcie budowy Zadanie programu MSBuild i warunkowo pod warunkiem różnych właściwości dla każdego projektu na liście element.
MSBuildDyskietka 3,5, jednak zapewnia dwa nowe zastrzeżone elementy metadanych, właściwości i AdditionalProperties, który dostarczyć elastyczny sposób do przekazywania różnych właściwości różnych projektów jest zbudowana w oparciu o Zadanie programu MSBuild.
[!UWAGA]
Te nowe elementy metadanych mają zastosowanie tylko do elementów przekazany w atrybucie projektów Zadanie programu MSBuild.
Wieloprocesorowych korzyści kompilacji
Jedną z głównych korzyści z używania tych nowych metadanych występuje podczas tworzenia projektów równolegle systemie wieloprocesorowym.Metadane umożliwia konsolidowanie wszystkich projektów w ramach jednej Zadanie programu MSBuild wywołanie bez konieczności wykonywania żadnych dozowania lub uzależnione od MSBuild zadania.I po wywołaniu tylko jeden Zadanie programu MSBuild, wszystkie projekty umieszczone w atrybucie projektów zostanie zbudowana równolegle.(Tylko w przypadku jednak, jeśli BuildInParallel=true atrybut jest obecny w Zadanie programu MSBuild.) Aby uzyskać więcej informacji, zobacz Równoległe tworzenie wielu projektów za pomocą narzędzia MSBuild.
Właściwości metadanych
Typowym scenariuszem jest podczas tworzenia wielu plików roztwór za pomocą Zadanie programu MSBuild, tylko przy użyciu kompilacji różne konfiguracje.Może potrzebować opracować rozwiązanie a1 przy użyciu a2 konfiguracji i roztwór debugowania przy użyciu konfiguracji wydania.W MSBuild 2.0, ten plik projektu będzie wyglądać następująco:
[!UWAGA]
W poniższym przykładzie "…" reprezentuje pliki dodatkowe rozwiązania.
a.Proj
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<MSBuild Projects="a1.sln..." Properties="Configuration=Debug"/>
<MSBuild Projects="a2.sln" Properties="Configuration=Release"/>
</Target>
</Project>
Za pomocą właściwości metadanych, jednak można uprościć tę opcję za pomocą jednego Zadanie programu MSBuild, jak wynika z następujących czynności:
a.Proj
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectToBuild Include="a1.sln…">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="a2.sln">
<Properties>Configuration=Release</Properties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"/>
</Target>
</Project>
- lub -
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectToBuild Include="a1.sln…"/>
<ProjectToBuild Include="a2.sln">
<Properties>Configuration=Release</Properties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"
Properties="Configuration=Debug"/>
</Target>
</Project>
AdditionalProperties metadanych
Rozważmy następujący scenariusz, gdzie buduje się dwa pliki roztwór za pomocą Zadanie programu MSBuild, zarówno w konfiguracji, wersji, ale go przy użyciu architekturze x 86, a drugi przy użyciu architekturze ia64.W MSBuild 2.0, może być konieczne do utworzenia wielu wystąpień Zadanie programu MSBuild: jedną do budowania projektu przy użyciu konfiguracji wydania z x 86 architektury, z drugiej za pomocą Konfiguracja wersji o architekturze ia64.Plik projektu powinien wyglądać jak na poniższej ilustracji:
a.Proj
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<MSBuild Projects="a1.sln…" Properties="Configuration=Release;
Architecture=x86"/>
<MSBuild Projects="a2.sln" Properties="Configuration=Release;
Architecture=ia64"/>
</Target>
</Project>
Za pomocą metadanych AdditionalProperties, można uprościć tę opcję za pomocą jednego Zadanie programu MSBuild za pomocą następujących czynności:
a.Proj
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectToBuild Include="a1.sln…">
<AdditionalProperties>Architecture=x86
</AdditionalProperties>
</ProjectToBuild>
<ProjectToBuild Include="a2.sln">
<AdditionalProperties>Architecture=ia64
</AdditionalProperties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"
Properties="Configuration=Release"/>
</Target>
</Project>
Przykład
W poniższym przykładzie użyto MSBuild zadaniem zbudowania projekty określone przez ProjectReferences element z kolekcji.Wynikowy oczekiwane rezultaty, są przechowywane w AssembliesBuiltByChildProjects element z kolekcji.
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectReferences Include="*.*proj" />
</ItemGroup>
<Target Name="BuildOtherProjects">
<MSBuild
Projects="@(ProjectReferences)"
Targets="Build">
<Output
TaskParameter="TargetOutputs"
ItemName="AssembliesBuiltByChildProjects" />
</MSBuild>
</Target>
</Project>