MarkupCompilePass2 任务
MarkupCompilePass2 任务对引用同一项目中的类型的 XAML 文件执行第二轮标记编译。
任务参数
参数 | 说明 |
---|---|
AlwaysCompileMarkupFilesInSeparateDomain |
可选 Boolean 参数。 指定是否在单独的 AppDomain 下运行该任务。 如果此参数返回 false,则任务将在与 MSBuild 相同的 AppDomain 中运行,且运行速度更快。 如果该参数返回 true,则任务将在独立于 MSBuild 的另一个 AppDomain 中运行,且运行速度更慢。 |
AssembliesGeneratedDuringBuild |
可选 String [] 参数。 指定在生成过程中对更改的程序集的引用。 例如,Visual Studio 解决方案可能包含一个引用了另一个项目的已编译输出的项目。 在这种情况下,可以将第二个项目的已编译输出添加到 AssembliesGeneratedDuringBuild。 注意:AssembliesGeneratedDuringBuild 必须包含对生成解决方案所生成的一组完整程序集的引用。 |
AssemblyName |
必需的 String 参数。 指定为项目生成的程序集的简称。 例如,如果项目生成一个名为 WinExeAssembly.exe 的可执行文件,则 AssemblyName 参数的值为 WinExeAssembly 。 |
GeneratedBaml |
可选的 ITaskItem[] 输出参数。 包含已生成的 XAML 二进制格式文件的列表。 |
KnownReferencePaths |
可选 String [] 参数。 指定在生成过程中对从未更改的程序集的引用。 包括位于全局程序集缓存 (GAC)、.NET 安装目录等位置中的程序集。 |
Language |
必需的 String 参数。 指定编译器支持的托管语言。 有效的选项有 C#、VB、JScript 和 C++。 |
LocalizationDirectivesToLocFile |
可选 String 参数。 指定如何针对每个源 XAML 文件生成本地化信息。 有效选项有“无”、“仅注释”和“全部”。 |
OutputPath |
必需的 String 参数。 指定在其中生成 XAML 二进制格式文件的目录。 |
OutputType |
必需的 String 参数。 指定项目生成的程序集的类型。 有效选项有 winexe、exe、library 和 netmodule。 |
References |
可选的 ITaskItem[] 参数。 指定引用列表,范围从文件到程序集,它们包含 XAML 文件中所使用的类型。 一个引用针对的是 GenerateTemporaryTargetAssembly 任务生成的程序集,该任务必须在 MarkupCompilePass2 任务之前运行。 |
RootNamespace |
可选 String 参数。 指定项目内部的类的根命名空间。 当对应的 XAML 文件不包括 x:Class 属性时,RootNamespace 也将用作生成的托管代码文件的默认命名空间。 |
XAMLDebuggingInformation |
可选 Boolean 参数。 如果为 true,则会生成诊断信息并将其包括在编译的 XAML 中,以辅助调试。 |
注解
运行 MarkupCompilePass2 之前,必须先生成包含 XAML 文件(该文件的标记编译轮有延迟)所使用的类型的临时程序集。 通过运行 GenerateTemporaryTargetAssembly 任务生成临时程序集。
对生成的临时程序集的引用将在运行时提供给 MarkupCompilePass2,使得在第一轮标记编译过程中编译存在延迟的 XAML 文件现可编译为二进制格式。
示例
下面的示例演示如何使用 MarkupCompilePass2 任务来执行第二轮编译。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask
TaskName="Microsoft.Build.Tasks.Windows.MarkupCompilePass2"
AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
<Target Name="MarkupCompilePass2Task">
<MarkupCompilePass2
AssemblyName="WPFMSBuildSample"
Language="C#"
OutputType="WinExe"
OutputPath="obj\Debug\"
References=".\obj\debug\WPFMSBuildSample.exe;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" />
</Target>
</Project>