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>