GenerateTemporaryTargetAssembly-Aufgabe

Mit der Aufgabe GenerateTemporaryTargetAssembly wird eine Assembly generiert, wenn mindestens eine XAML-Seite in einem Projekt auf einen Typ verweist, der lokal in diesem Projekt deklariert ist. Die generierte Assembly wird entfernt, nachdem der Build abgeschlossen ist, oder wenn beim Buildprozess ein Fehler auftritt.

Aufgabenparameter

Parameter Beschreibung
AssemblyName Erforderlicher String-Parameter.

Gibt den Kurznamen der Assembly an, die für ein Projekt generiert wird, und ist auch der Name der temporär generierten Zielassembly. Wenn ein Projekt z. B. eine ausführbare Windows-Datei mit dem Namen WinExeAssembly.exe generiert, weist der AssemblyName-Parameter den Wert WinExeAssembly auf.
CompileTargetName Erforderlicher String-Parameter.

Gibt den Namen des 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 vom Ziel ausgeführt wird, das durch den CompileTargetName-Parameter angegeben wird. Für das CoreCompile-Ziel ist dieser Wert Compile.
CurrentProject Erforderlicher String-Parameter.

Gibt den vollständigen Pfad der MSBuild-Projektdatei für das Projekt an, das eine temporäre Zielassembly erfordert.
GeneratedCodeFiles Optionaler ITaskItem[] -Parameter.

Gibt die Liste der sprachspezifischen verwalteten Codedateien an, die mit der MarkupCompilePass1-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 von Assemblys nach Pfad und Namen an, auf die die Typen verweisen, die in die temporäre Zielassembly kompiliert werden.
ReferencePathTypeName Erforderlicher String-Parameter.

Gibt den Parameter an, der vom Kompilierungszielparameter (CompileTargetName) verwendet wird, der die Liste der Assemblyverweise (ReferencePath) angibt. Der entsprechende Wert ist ReferencePath.

Hinweise

Im ersten Markupkompilierungsschritt, der von MarkupCompilePass1 ausgeführt wird, werden XAML-Dateien in das Binärformat kompiliert. Folglich benötigt der Compiler eine Liste der referenzierten Assemblys mit den Typen, die von den XAML-Dateien verwendet werden. Wenn jedoch eine XAML-Datei einen Typ verwendet, der im selben Projekt definiert ist, wird eine entsprechende Assembly für das Projekt erst bei Erstellung des Projekts erstellt. Aus diesem Grund kann ein Assemblyverweis nicht beim ersten Markupkompilierungsschritt bereitgestellt werden.

Stattdessen verschiebt MarkupCompilePass1 die Konvertierung von XAML-Dateien, die Verweise auf Typen im gleichen Projekt enthalten, auf einen zweiten Markupkompilierungsschritt, der von MarkupCompilePass2 ausgeführt wird. Bevor MarkupCompilePass2 ausgeführt wird, wird eine temporäre Assembly generiert. Diese Assembly enthält die von den XAML-Dateien verwendeten Typen, deren Markupkompilierungsschritt aufgeschoben wurde. Ein Verweis auf die generierte Assembly wird während der Ausführung an MarkupCompilePass2 übergeben, um die Konvertierung der zurückgestellten XAML-Dateien in das Binärformat zu ermöglichen.

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

Siehe auch