Udostępnij za pośrednictwem


Jak: Konfigurowanie cele i zadania

Wybrane zadania MSBuild można ustawić do uruchamiania w środowisku, które ich cel, niezależnie od środowiska na komputerze deweloperskim.Na przykład użycie komputera 64-bitowego do zbudowania danej architektury cele 32-bitowych aplikacji, wybrane zadania są uruchamiane w 32-bitowego procesu.

[!UWAGA]

Jeśli zadania kompilacji jest napisany w.NET języka, takie jak Visual C# lub Visual Basic i jest nie wykorzystania zasobów macierzystych lub narzędzia, a następnie go będzie uruchamiane w dowolnym kontekście docelowych bez dostosowywania.

UsingTask atrybuty i parametry zadania

Następujące UsingTask atrybuty wpływają na wszystkie operacje zadania procesu kompilacji w szczególności:

  • Runtime Atrybut, jeśli jest obecny, określa wspólne wersji runtime (CLR) języka i można wykonać jeden z następujących wartości: CLR2, CLR4, CurrentRuntime, lub * (wszelkie runtime).

  • Architecture Atrybut, jeśli jest obecny, ustawia platformy i bitowości i może mieć jedną z następujących wartości: x86, x64, CurrentArchitecture, lub * (wszelkie architecture).

  • TaskFactory Atrybut, jeśli jest obecny, ustawia factory zadania, tworzy wystąpienie zadania i zajmuje tylko wartość TaskHostFactory.Aby uzyskać więcej informacji zobacz sekcję fabryk zadania w dalszej części tego dokumentu.

<UsingTask TaskName="SimpleTask" 
   Runtime="CLR2"
   Architecture="x86"
   AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v3.5.dll" />

Można również użyć MSBuildRuntime i MSBuildArchitecture parametrami ustawianymi w kontekście docelowych pojedynczego zadania.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
   <Target Name="MyTarget">
      <SimpleTask MSBuildRuntime="CLR2" MSBuildArchitecture= "x86"/>
   </Target>
</Project>

Zanim program MSBuild uruchamia zadanie, szuka pasującego UsingTask który ma ten sam kontekst docelowych.Parametry, które są określone w UsingTask , ale w odpowiadające im zadania nie są uważane za mają być dopasowywane.Parametry, które określone zadanie, ale nie w odpowiednich UsingTask są również uważane za mają być dopasowywane.Jeśli nie określono wartości parametru w albo UsingTask lub zadania, wartości domyślne, aby * (każdy parametr).

Informacje dotyczące przestrogiPrzestroga

Jeśli jest więcej niż jeden UsingTask istnieje i wszystkie mają odpowiadające sobie TaskName, Runtime, i Architecture atrybuty, ostatnia z nich oceniane zastępuje inne.

Jeśli parametry zostały ustawione na zadanie, program MSBuild próbuje znaleźć UsingTask który pasuje do tych parametrów lub, co najmniej, nie jest w konflikcie z nich.Więcej niż jeden UsingTask można określić w kontekście docelowych tego samego zadania.Na przykład zadanie z różnych plików wykonywalnych dla różnych środowisk może wyglądać ta:

<UsingTask TaskName="MyTool" 
   Runtime="CLR2"
   Architecture="x86"
   AssemblyFile="$(MyToolsPath)\MyTool.v2.0.dll" />

<UsingTask TaskName="MyTool" 
   Runtime="CLR4"
   Architecture="x86"
   AssemblyFile="$(MyToolsPath)\MyTool.4.0.dll" />

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
   <Target Name="MyTarget">
      <MyTool MSBuildRuntime="CLR2" MSBuildArchitecture= "x86"/>
   </Target>
</Project>

Zakłady zadania

Przed uruchomieniem zadania, program MSBuild sprawdza, czy jest wyznaczonych do działania w bieżącym kontekście oprogramowania.Jeśli zadanie jest wyznaczona, MSBuild przekazuje ją do AssemblyTaskFactory, który uruchamia je w bieżącym procesie; w przeciwnym razie MSBuild przekazuje zadanie do TaskHostFactory, który uruchamia zadanie w procesie, który pasuje do kontekstu docelowych.Nawet jeśli bieżący kontekst i kontekst docelowe odpowiada, można wymusić uruchomienie zadania, out-of-process (w przypadku izolacji, bezpieczeństwa lub innych powodów) przez ustawienie TaskFactory do TaskHostFactory.

<UsingTask TaskName="MisbehavingTask" 
   TaskFactory="TaskHostFactory"
   AssemblyFile="$(MSBuildToolsPath)\MyTasks.dll">
</UsingTask>

Parametry zadania fantomu

Podobnie jak inne parametry zadania MSBuildRuntime i MSBuildArchitecture można ustawić właściwości kompilacji.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
      <FrameworkVersion>3.0</FrameworkVersion>
   </PropertyGroup>
   <Target Name="MyTarget">
      <SimpleTask MSBuildRuntime="$(FrameworkVerion)" MSBuildArchitecture= "x86"/>
   </Target>
</Project>

W przeciwieństwie do innych parametrów zadania MSBuildRuntime i MSBuildArchitecture nie są widoczne dla samego zadania.Zapisać zadanie, które jest świadomy kontekstu, w którym działa, należy albo przetestować kontekście przez wywołanie.NET Framework lub przekazywania informacji kontekstu poprzez inne parametry zadania za pomocą właściwości kompilacji.

[!UWAGA]

UsingTaskatrybuty można ustawić właściwości toolset i środowiska.

MSBuildRuntime i MSBuildArchitecture parametry zapewniają najbardziej elastyczny sposób ustawić kontekstu docelowej, ale najbardziej ograniczony w zakres.Z jednej strony ponieważ są ustawione na wystąpienie zadania, sama i nie są oceniane, dopóki zadanie jest uruchamiane, można czerpać ich wartości z pełnego zakresu właściwości dostępne w zarówno w czasie oceny, jak i w czasie kompilacji.Z drugiej strony parametry te dotyczą tylko konkretnego wystąpienia zadania w określonego elementu docelowego.

[!UWAGA]

Parametry zadania są oceniane w kontekście węzła nadrzędnego, a nie w kontekście hosta zadania.Zmienne środowiskowe, które są runtime - lub zależnego od architektury (takich jak lokalizacja plików programu), oceni wartość, która pasuje do węzła nadrzędnego.Jednakże jeśli w tej samej zmiennej środowiskowej jest odczytywane bezpośrednio przez zadanie, go poprawnie ocenia się w kontekście hosta zadania.

Zobacz też

Koncepcje

Konfigurowanie cele i zadania