将 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 |
属性 AssemblyName 或 AssemblyFile 属性是必需的。要加载的程序集的名称。 属性 AssemblyName 接受强名称程序集,尽管不需要强命名。 使用此属性等效于使用 Load .NET 中的方法加载程序集。如果使用此属性, AssemblyFile 则不能使用此属性。 |
AssemblyFile |
需要属性 AssemblyName 或 AssemblyFile 属性。程序集的文件路径。 此属性接受完整路径或相对路径。 相对路径相对于声明元素的项目文件或目标文件的 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内容特定于任务工厂。 默认值 TaskFactory 为 AssemblyTaskFactory:将任务加载到正在运行的进程。 |
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" />
由于没有 Runtime 或 TaskHost 指定,因此任务在 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>