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