GenerateTemporaryTargetAssembly, tâche
La tâche GenerateTemporaryTargetAssembly génère un assembly si au moins une page XAML dans un projet fait référence à un type déclaré localement dans ce projet. L’assembly généré est supprimé une fois le processus de génération terminé, ou en cas d’échec du processus de génération.
Paramètres de tâche
Paramètre | Description |
---|---|
AssemblyName |
Paramètre String obligatoire. Spécifie le nom court de l’assembly généré pour un projet. Il s’agit aussi du nom de l’assembly cible généré temporairement. Par exemple, si un projet génère un exécutable Windows dont le nom est WinExeAssembly.exe, le paramètre Nom de l’assembly a la valeur WinExeAssembly. |
CompileTargetName |
Paramètre String obligatoire. Spécifie le nom de la cible MSBuild utilisée pour générer des assemblys à partir de fichiers de code source. La valeur par défaut de CompileTargetName est CoreCompile. |
CompileTypeName |
Paramètre String obligatoire. Spécifie le type de compilation exécutée par la cible spécifiée par le paramètre CompileTargetName. Pour la cible CoreCompile, cette valeur est Compile. |
CurrentProject |
Paramètre String obligatoire. Spécifie le chemin complet du fichier projet MSBuild pour le projet qui nécessite un assembly cible temporaire. |
GeneratedCodeFiles |
Paramètre ITaskItem[] facultatif. Spécifie la liste des fichiers de code managé propres au langage générés par la tâche MarkupCompilePass1. |
IntermediateOutputPath |
Paramètre String obligatoire. Spécifie le répertoire où l’assembly cible temporaire est généré. |
MSBuildBinPath |
Paramètre String obligatoire. Spécifie l’emplacement de MSBuild.exe, qui est obligatoire pour compiler l’assembly cible temporaire. |
ReferencePath |
Paramètre ITaskItem[] facultatif. Spécifie une liste d’assemblys, par chemin et nom de fichier, qui sont référencés par les types qui sont compilés dans l’assembly cible temporaire. |
ReferencePathTypeName |
Paramètre String obligatoire. Spécifie le paramètre utilisé par le paramètre de cible de compilation (CompileTargetName) qui spécifie la liste des références d’assembly (ReferencePath). La valeur appropriée est ReferencePath. |
Remarques
La première passe de compilation du balisage, exécutée par MarkupCompilePass1, compile les fichiers XAML au format binaire. Ainsi, le compilateur a besoin d’une liste des assemblys référencés qui contiennent les types utilisés par les fichiers XAML. Toutefois, si un fichier XAML utilise un type qui est défini dans le même projet, un assembly correspondant à ce projet est créé uniquement quand le projet est généré. Ainsi, une référence d’assembly ne peut pas être fournie pendant la première passe de compilation du balisage.
Au lieu de cela, MarkupCompilePass1 diffère la conversion des fichiers XAML qui contiennent des références à des types dans le même projet à une deuxième passe de compilation du balisage, qui est exécutée par MarkupCompilePass2. Avant l’exécution de MarkupCompilePass2, un assembly temporaire est généré. Cet assembly contient les types qui sont utilisés par les fichiers XAML dont la passe de compilation du balisage a été différée. Une référence à l’assembly généré est fournie à MarkupCompilePass2 quand elle s’exécute, pour permettre la conversion au format binaire des fichiers XAML dont la compilation a été différée.
Exemple
L’exemple suivant génère un assembly temporaire, car Page1.xaml contient une référence à un type qui est dans le même projet.
<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>