GenerateTemporaryTargetAssembly 任务
更新:2007 年 11 月
如果项目中至少有一个可扩展应用程序标记语言 (XAML) 页引用了在该项目中本地声明的类型,则 GenerateTemporaryTargetAssembly 任务将生成一个程序集。当生成过程完成后或者生成过程失败时,将会移除生成的程序集。
任务参数
参数 |
说明 |
---|---|
AssemblyName |
必需的 String 参数。 指定为项目生成的程序集的简称,也是临时生成的目标程序集的名称。例如,如果项目生成一个名称为 WinExeAssembly.exe 的 Windows 可执行文件,则 AssemblyName 参数的值为 WinExeAssembly。 |
CompileTargetName |
必需的 String 参数。 指定用于从源代码文件生成程序集的 Microsoft Build Engine (MSBuild) 目标的名称。CompileTargetName 的典型值为 CoreCompile。 |
CompileTypeName |
必需的 String 参数。 指定由 CompileTargetName 参数指定的目标所执行的编译的类型。对于 CoreCompile 目标,此值为 Compile。 |
CurrentProject |
必需的 String 参数。 为需要临时目标程序集的项目指定 MSBuild 项目文件的完整路径。 |
GeneratedCodeFiles |
可选的 ITaskItem[] 参数。 指定由 MarkupCompilePass1 任务任务生成的特定于语言的托管代码文件列表。 |
IntermediateOutputPath |
必需的 String 参数。 指定临时目标程序集的生成目标。 |
MSBuildBinPath |
必需的 String 参数。 指定编译临时目标程序集所需的 MSBuild.exe 的位置。 |
ReferencePath |
可选的 ITaskItem[] 参数。 通过路径和文件名指定由编译成临时目标程序集的类型所引用的程序集列表。 |
ReferencePathTypeName |
必需的 String 参数。 指定编译目标 (CompileTargetName) 参数(用于指定程序集引用列表 (ReferencePath))所使用的参数。适合的值为 ReferencePath。 |
备注
MarkupCompilePass1 任务运行的第一个标记编译处理过程会将 XAML 文件编译为二进制格式。因此,编译器需要一个引用的程序集(包含 XAML 文件所使用的类型)的列表。但是,如果 XAML 文件使用在同一项目中定义的类型,则只有在生成项目后,才会为该项目创建相应的程序集。因此,在第一个标记编译处理过程中无法提供程序集引用。
相反,MarkupCompilePass1 会将 XAML 文件(包含对相同项目中的类型的引用)的转换工作延迟到由 MarkupCompilePass2 任务执行的第二次标记编译中。在执行 MarkupCompilePass2 之前,将生成一个临时程序集。此程序集包含标记编译处理过程被推迟的 XAML 文件所使用的类型。将在 MarkupCompilePass2 运行时向其提供对所生成临时程序集的引用,以便允许将延迟编译的 XAML 文件转换为二进制格式。
示例
下面的示例将生成临时程序集,因为 Page1.xaml 包含对相同项目中的类型的引用。
<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>
请参见
概念
Windows Presentation Foundation XAML 浏览器应用程序概述
其他资源
Windows Presentation Foundation MSBuild 参考