GenerateTemporaryTargetAssembly-Aufgabe
Die GenerateTemporaryTargetAssembly-Aufgabe generiert eine Assembly, wenn mindestens eine Extensible Application Markup Language (XAML)-Seite eines Projekts auf einen Typ verweist, der lokal in diesem Projekt deklariert ist. Die generierte Assembly wird entfernt, sobald der Buildprozess abgeschlossen ist oder wenn Fehler im Buildprozess auftreten.
Aufgabenparameter
Parameter |
Beschreibung |
---|---|
AssemblyName |
Erforderlicher String-Parameter. Gibt den Kurznamen der für ein Projekt generierten Assembly an, bei dem es sich gleichzeitig um den Namen der temporär generierten Zielassembly handelt. Wenn beispielsweise ein Projekt eine ausführbare Windows-Datei mit dem Namen WinExeAssembly.exe generiert, hat der AssemblyName-Parameter den Wert WinExeAssembly. |
CompileTargetName |
Erforderlicher String-Parameter. Gibt den Namen des Microsoft build engine (MSBuild)-Ziels an, das zum Generieren von Assemblys aus Quellcodedateien verwendet wird. Der typische Wert für CompileTargetName ist CoreCompile. |
CompileTypeName |
Erforderlicher String-Parameter. Gibt den Typ der Kompilierung an, die von dem Ziel ausgeführt wird, das mit dem CompileTargetName-Parameter angegeben wird. Für das CoreCompile-Ziel lautet dieser Wert Compile. |
CurrentProject |
Erforderlicher String-Parameter. Gibt den vollständigen Pfad der MSBuild-Projektdatei für das Projekt an, für das eine temporäre Zielassembly erforderlich ist. |
GeneratedCodeFiles |
Optionaler ITaskItem[]-Parameter. Gibt die Liste der sprachspezifischen verwalteten Codedateien an, die von der MarkupCompilePass1-Aufgabe-Aufgabe generiert wurden. |
IntermediateOutputPath |
Erforderlicher String-Parameter. Gibt das Verzeichnis an, in dem die temporäre Zielassembly generiert wird. |
MSBuildBinPath |
Erforderlicher String-Parameter. Gibt den Speicherort von MSBuild.exe an, die zum Kompilieren der temporären Zielassembly erforderlich ist. |
ReferencePath |
Optionaler ITaskItem[]-Parameter. Gibt eine Liste der Assemblys mit Pfad und Dateinamen an, auf die von den Typen verwiesen wird, die in die temporäre Zielassembly kompiliert werden. |
ReferencePathTypeName |
Erforderlicher String-Parameter. Gibt den Parameter an, der von dem Parameter des Kompilierungsziels (CompileTargetName) verwendet wird, der die Liste der Assemblyverweise (ReferencePath) angibt. Der geeignete Wert ist ReferencePath. |
Hinweise
Im ersten Markupkompilierungsdurchlauf, der von der MarkupCompilePass1-Aufgabe ausgeführt wird, werden XAML-Dateien in das Binärformat kompiliert. Folglich benötigt der Compiler eine Liste der Assemblys, auf die verwiesen wird und in denen die in den XAML-Dateien verwendeten Typen enthalten sind. Wenn eine XAML-Datei jedoch einen Typ verwendet, der im gleichen Projekt definiert ist, wird eine entsprechende Assembly für das Projekt erst erstellt, nachdem das Projekt erstellt wurde. Deshalb kann ein Assemblyverweis nicht während des ersten Markupkompilierungsdurchlaufs bereitgestellt werden.
Stattdessen verschiebt MarkupCompilePass1 die Konvertierung von XAML-Dateien, die Verweise auf Typen im gleichen Projekt enthalten, in den zweiten Markupkompilierungsdurchlauf, der von der MarkupCompilePass2-Aufgabe ausgeführt wird. Vor dem Ausführen von MarkupCompilePass2 wird eine temporäre Assembly generiert. Diese Assembly enthält die von den XAML-Dateien verwendeten Typen, deren Markupkompilierungsdurchlauf verschoben wurde. Während der Ausführung wird dem MarkupCompilePass2 ein Verweis auf die generierte Assembly bereitgestellt, sodass die XAML-Dateien, deren Kompilierung verschoben wurde, in das Binärformat konvertiert werden können.
Beispiel
Im folgenden Beispiel wird eine temporäre Assembly generiert, da Page1.xaml einen Verweis auf einen Typ im gleichen Projekt enthält.
<Project xmlns="https://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>
Siehe auch
Konzepte
Erstellen einer WPF-Anwendung (WPF)
Übersicht über WPF-XAML-Browseranwendungen