Sdílet prostřednictvím


Jak: konfigurace cíle a úkoly

Vybrané úkoly MSBuild můžete nastavit spuštění v prostředí, které jsou zaměřeny, bez ohledu na životní prostředí vývojovém počítači.Například pokud používáte 64bitový počítač pro vytvoření této architektury cíle 32bitové aplikace, vybrané úkoly jsou spouštěny v procesu 32bitové.

[!POZNÁMKA]

Pokud úkol sestavení.NET, jazyk, jako je Visual C# nebo Visual Basic a není nativní využití prostředků nebo nástroje, pak jej bude spuštěn v libovolném kontextu cíl bez přizpůsobení.

UsingTask atributy a parametry úlohy

Následující UsingTask atributů ovlivnit všechny operace úloh v procesu zejména sestavení:

  • Runtime Atribut, je-li přítomen, nastaví společné jazykové verze modulu runtime (CLR) a můžete provést jednu z těchto hodnot: CLR2, CLR4, CurrentRuntime, nebo * (všechny runtime).

  • Architecture Atribut, je-li přítomen, nastaví platformu a počtu bitů a můžete provést jednu z těchto hodnot: x86, x64, CurrentArchitecture, nebo * (libovolné architektuře).

  • TaskFactory Atribut, je-li přítomen, nastaví factory úkol, který vytvoří a spouští instanci úlohy a trvá pouze hodnotu TaskHostFactory.Další informace naleznete v části úkolu továren dále v tomto dokumentu.

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

Můžete také použít MSBuildRuntime a MSBuildArchitecture parametry nastavit cíl kontextu jednotlivých úloh.

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

Před spuštěním nástroje MSBuild úkolu, vyhledá odpovídající UsingTask , který má stejný cíl kontextu.Parametry, které jsou specifikovány v UsingTask , ale není v odpovídající úkolu jsou považovány za odpovídal.Parametry zadané úlohy, ale není v odpovídající UsingTask jsou také považovány za odpovídal.Pokud nejsou zadány hodnoty parametru v buď UsingTask nebo úkol, výchozí hodnoty * (parametru).

Poznámka k upozorněníUpozornění

Je-li více než jeden UsingTask existuje a všechny mají odpovídající TaskName, Runtime, a Architecture atributy poslední jeden hodnocenou nahradí ostatním.

Parametry jsou nastaveny na úkolu, MSBuild pokusí najít UsingTask , odpovídá tyto parametry nebo nejméně, není v rozporu s nimi.Více UsingTask můžete určit cílový kontextu stejný úkol.Úkol s různými spustitelných souborů pro různé cílové prostředí může vypadat například tato:

<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>

Továrny úloh

Před spuštěním úlohy, nástroj MSBuild zkontroluje, zda je určen ke spuštění v kontextu aktuální software.Pokud úkol je určena, MSBuild předává AssemblyTaskFactory, který je spuštěn v aktuálním procesu; Nástroj MSBuild jinak předává TaskHostFactory, ve kterém je úloha spuštěna v procesu, který odpovídá kontextu cílové úkolu.I v případě, že aktuální kontext a cíle kontextu odpovídat, můžete vynutit spuštění úlohy out-of-process (pro izolaci zabezpečení nebo jiné důvody) nastavením TaskFactory na TaskHostFactory.

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

Fiktivní parametry úlohy

Ostatní parametry úlohy, například MSBuildRuntime a MSBuildArchitecture lze nastavit pomocí vlastnosti sestavení.

<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>

Na rozdíl od jiných úloh parametrů MSBuildRuntime a MSBuildArchitecture nejsou zřejmé, samotný úkol.Chcete-li úkol, který si je vědoma kontext, ve kterém běží, musí buď otestovat kontextu voláním.NET Framework nebo předat kontextové informace prostřednictvím dalších úloh parametrů pomocí vlastnosti sestavení.

[!POZNÁMKA]

UsingTaskatributy lze nastavit pomocí vlastnosti toolset a prostředí.

MSBuildRuntime a MSBuildArchitecture parametry obsahují maximálně flexibilní způsob nastavení cílové kontextu, ale také nejvíce omezeny v oboru.Protože jsou nastaveny na samotnou instanci úlohy a nebudou vyhodnoceny, dokud úkol je spustit, budou jejich hodnoty z vlastností, které jsou k dispozici na zkušební dobu a vytváření v plném rozsahu na jedné straně odvodit.Na druhé straně tyto parametry použít pouze pro konkrétní úkol v konkrétní cílové instance.

[!POZNÁMKA]

Parametry úlohy jsou vyhodnocovány v rámci nadřazeného uzlu, nikoli v rámci úkolu hostitele.Proměnné prostředí, které jsou runtime - nebo závislé na architektuře (například umístění souborů programu) se vyhodnotí na hodnotu, která odpovídá nadřazeného uzlu.Však Pokud stejné proměnné prostředí je přečíst přímo úlohou, jej budou správně hodnoceny v rámci úkolu hostitele.

Viz také

Koncepty

Konfigurace cíle a úkoly