UsingTask 元素 (MSBuild)

Task 元素中引用的任务映射到包含任务实现的程序集。

<Project><UsingTask>

Syntax

<UsingTask TaskName="TaskName"
    AssemblyName = "AssemblyName"
    TaskFactory = "ClassName"
    Condition="'String A'=='String B'" />

注释

与属性和项不同,第一个UsingTask应用于 a TaskName 元素的元素用于替代必须先在现有元素之前定义新UsingTask任务,或在新的UsingTask元素中指定Override="true"

属性和元素

下列各节描述了特性、子元素和父元素。

特性

Attribute Description
Architecture 可选属性。

指定任务必须在指定位的进程中运行。 如果当前进程不满足要求,任务将在执行的任务主机进程中运行。

支持的值是 x86 (32 位)、 x64 (64 位) CurrentArchitecture* (任何体系结构)。
AssemblyName 属性 AssemblyNameAssemblyFile 属性是必需的。

要加载的程序集的名称。 属性 AssemblyName 接受强名称程序集,尽管不需要强命名。 使用此属性等效于使用 Load .NET 中的方法加载程序集。

如果使用此属性, AssemblyFile 则不能使用此属性。
AssemblyFile 需要属性 AssemblyNameAssemblyFile 属性。

程序集的文件路径。 此属性接受完整路径或相对路径。 相对路径相对于声明元素的项目文件或目标文件的 UsingTask 目录。 使用此属性等效于使用 LoadFrom .NET 中的方法加载程序集。

如果使用此属性, AssemblyName 则不能使用此属性。
Override 可选属性。

指定此 UsingTask 元素的优先级应高于定义相同任务名称的其他元素。 每个任务名称只允许一个替代。 在 MSBuild 17.2 中添加。
Runtime 可选属性。

指定任务必须在指定版本的 .NET Framework 运行时中运行。 如果当前进程不满足要求,任务将在执行的任务主机进程中运行。

支持的值为“NET”(.NET Core 和 .NET 5 或更高版本)、 CLR2 (.NET Framework 3.5)、 CLR4 (.NET Framework 4.7.2 或更高版本)、 CurrentRuntimeNET (从 .NET 10 或更高版本开始)和*(任何运行时)。 只有在使用 MSBuild 18.0(Visual Studio 2026 或更高版本)或 .NET SDK 10 或更高版本时运行 .NET Framework MSBuild 时,才能调用 NET 运行时任务,并且不能从 .NET MSBuild (运行时 dotnet build)调用 CLR2/CLR4 任务。
TaskFactory 可选属性。

指定程序集中负责生成指定 Task 名称实例的类。 用户还可以将任务工厂接收和使用生成任务的子元素指定 Task 为子元素。 Task内容特定于任务工厂。 默认值 TaskFactoryAssemblyTaskFactory:将任务加载到正在运行的进程。
TaskName 必需的特性。

要从程序集引用的任务的名称。 如果可能存在歧义,此属性应始终指定完整命名空间。 如果存在歧义,MSBuild 会选择任意匹配,这可能会产生意外的结果。
Condition 可选属性。

要评估的条件。 有关详细信息,请参阅条件

子元素

元素 Description
ParameterGroup 显示在指定 TaskFactory任务上的参数集。
任务 传递给 TaskFactory 该任务以生成任务的实例的数据。

父元素

元素 Description
项目 MSBuild 项目文件的必需根元素。

注解

可以直接或通过导入的项目文件中包含的元素引用 UsingTask 环境变量、命令行属性、项目级属性和项目级项。 有关详细信息,请参阅 任务

注释

如果 UsingTask 元素来自 MSBuild 引擎全局注册的 .tasks 文件之一,则项目级属性和项没有意义。 项目级值不是 MSBuild 的全局值。

在 MSBuild 4.0 中,可以使用任务从 .overridetask 文件加载。

首次使用时加载 Task 包含自定义任务的程序集。

示例 1

以下示例演示如何将 UsingTask 元素与属性一 AssemblyFile 起使用。

<UsingTask TaskName="Email"
           AssemblyFile="c:\myTasks\myTask.dll" />

由于没有 RuntimeTaskHost 指定,因此任务在 MSBuild 进程中执行,在运行时和体系结构中,该任务恰好在给定生成中运行。

示例 2

以下示例演示如何将UsingTask元素与该程序集中定义的属性和自定义TaskFactory一起使用AssemblyName

<UsingTask TaskName="MyTask" AssemblyName="My.Assembly" TaskFactory="MyTaskFactory">
       <ParameterGroup>
              <Parameter1 ParameterType="System.String" Required="False" Output="False"/>
              <Parameter2 ParameterType="System.Int" Required="True" Output="False"/>
              ...
</ParameterGroup>
       <Task>
      ... Task factory-specific data ...
       </Task>
</UsingTask>

另请参阅