GenerateTemporaryTargetAssembly – úloha

Úkol GenerateTemporaryTargetAssembly vygeneruje sestavení, pokud alespoň jedna stránka XAML v projektu odkazuje na typ, který je deklarován místně v daném projektu. Vygenerované sestavení se odebere po dokončení procesu sestavení nebo v případě selhání procesu sestavení.

Parametry úkolu

Parametr Popis
AssemblyName Povinný parametr String .

Určuje krátký název sestavení, které je generováno pro projekt a je také název cílového sestavení, které je dočasně generováno. Pokud například projekt vygeneruje spustitelný soubor systému Windows, jehož název je WinExeAssembly.exe, má parametr AssemblyName hodnotu WinExeAssembly.
CompileTargetName Povinný parametr String .

Určuje název cíle NÁSTROJE MSBuild, který se používá ke generování sestavení ze souborů zdrojového kódu. Typická hodnota CompileTargetName je CoreCompile.
CompileTypeName Povinný parametr String .

Určuje typ kompilace, kterou provádí cíl určený parametrem CompileTargetName . Pro cíl CoreCompile je tato hodnota Compile.
CurrentProject Povinný parametr String .

Určuje úplnou cestu k souboru projektu MSBuild pro projekt, který vyžaduje dočasné cílové sestavení.
GeneratedCodeFiles Volitelný parametr ITaskItem[].

Určuje seznam souborů spravovaného kódu specifických pro jazyk, které byly generovány úlohou MarkupCompilePass1 .
IntermediateOutputPath Povinný parametr String .

Určuje adresář, do kterého se vygeneruje dočasné cílové sestavení.
MSBuildBinPath Povinný parametr String .

Určuje umístění nástroje MSBuild.exe, které je nutné ke kompilaci dočasného cílového sestavení.
ReferencePath Volitelný parametr ITaskItem[].

Určuje seznam sestavení podle cesty a názvu souboru, na které odkazují typy kompilované do dočasného cílového sestavení.
ReferencePathTypeName Povinný parametr String .

Určuje parametr, který je používán parametrem cíle kompilace (CompileTargetName), který určuje seznam odkazů sestavení (ReferencePath). Příslušná hodnota je ReferencePath.

Poznámky

První předání kompilace značek, které je spuštěno MarkupCompilePass1, kompiluje soubory XAML do binárního formátu. Kompilátor proto potřebuje seznam odkazovaných sestavení, která obsahují typy používané soubory XAML. Pokud však soubor XAML používá typ definovaný ve stejném projektu, odpovídající sestavení pro tento projekt se nevytvořilo, dokud se projekt nevytvořil. Proto nelze poskytnout odkaz na sestavení během prvního průchodu kompilace značek.

Místo toho MarkupCompilePass1 deferuje převod souborů XAML, které obsahují odkazy na typy ve stejném projektu na druhý kód kompilace pass, který je proveden MarkupCompilePass2. Před spuštěním MarkupCompilePass2 se vygeneruje dočasné sestavení. Toto sestavení obsahuje typy, které používají soubory XAML, jejichž průchod kompilace značek byl odložen. Odkaz na vygenerované sestavení se poskytuje MarkupCompilePass2 , když se spustí, aby odložené kompilační soubory XAML byly převedeny do binárního formátu.

Příklad

Následující příklad vygeneruje dočasné sestavení, protože Page1.xaml obsahuje odkaz na typ, který je ve stejném projektu.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <UsingTask
    TaskName="Microsoft.Build.Tasks.Windows.GenerateTemporaryTargetAssembly"
    AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
  <Target Name="GenerateTemporaryTargetAssemblyTask">
    <GenerateTemporaryTargetAssembly
      AssemblyName="WPFMSBuildSample"
      CompileTargetName="CoreCompile"
      CompileTypeName="Compile"
      CurrentProject="FullBuild.proj"
      GeneratedCodeFiles="obj\debug\app.g.cs;obj\debug\Page1.g.cs;obj\debug\Page2.g.cs"
      ReferencePath="c:\windows\Microsoft.net\Framework\v2.0.50727\System.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationCore.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationFramework.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\WindowsBase.dll"
      IntermediateOutputPath=".\obj\debug\"
      MSBuildBinPath="$(MSBuildBinPath)"
      ReferencePathTypeName="ReferencePath"/>
  </Target>
</Project>

Viz také