GenerateTemporaryTargetAssembly 任务

如果项目中至少有一个Extensible Application Markup Language (XAML) 页引用了在该项目中本地声明的类型,则 GenerateTemporaryTargetAssembly 任务将生成一个程序集。 生成过程完成后或者如果生成过程失败,将会移除生成的程序集。

任务参数

Parameter

说明

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>

请参见

概念

生成 WPF 应用程序 (WPF)

WPF XAML 浏览器应用程序概述

其他资源

WPF MSBuild 参考

WPF MSBuild 任务引用

MSBuild 参考

MSBuild 任务参考