使用 MSBuild API

MSBuild 提供公共 API 外围,因此程序可以执行生成操作和检查项目。 可在以下 NuGet 包中找到最新版的 MSBuild API:

包名称 描述
Microsoft.Build 包含用于创建、编辑和评估 MSBuild 项目的 Microsoft.Build 程序集。
Microsoft.Build.Framework 包含其他 MSBuild 程序集所用的通用 MSBuild 框架程序集。
Microsoft.Build.Runtime 提供 MSBuild 的完整可执行文件副本。 仅当应用程序需要在无需安装 MSBuild 的情况下加载项目或执行进程内生成操作时,才引用此包。 若要使用此包成功地评估项目,需要将其他组件(如编译器)聚合到应用程序目录。
Microsoft.Build.Tasks.Core 包含可实现 MSBuild 的常用任务的 Microsoft.Build.Tasks 程序集。
Microsoft.Build.Utilities.Core 包含用于实现自定义 MSBuild 任务的 Microsoft.Build.Utilities 程序集。

此外,NuGet 还托管了一个已弃用的旧版程序集 Microsoft.Build.Engine

MSBuild API 有几种不同版本,对于版本 15 和 16,NuGet 包中有两种不同形式的程序集,一种使用 .NET Framework 进行编译,另一种使用 .NET Core 进行编译,同时也是 .NET Framework API 图面的子集。 调用 dotnet 命令以及在 Mac 和 Linux 系统上使用 MSBuild 时,将使用 .NET Core 版的 MSBuild。

可以通过使用 .NET API 浏览器或浏览下表中的命名空间查找 MSBuild API 的文档。

命名空间 适用于 描述
Microsoft.Build.Construction 全部 包含 MSBuild 对象模型用于构造具有未评估值的项目根的类型。 每个项目根都对应一个项目或目标文件。
Microsoft.Build.Definition 全部 包含支持项目构造的 ProjectOptions 类。
Microsoft.Build.Evaluation 全部 包含 MSBuild 对象模型用于评估项目的类型。 每个项目都与一个或多个项目根相关联。
Microsoft.Build.Evaluation.Context 全部 包含 EvaluationContext 类,用于存储各个调用的评估状态。
Microsoft.Build.Exceptions 全部 包含可能在生成过程中引发的异常类型。
Microsoft.Build.Execution 全部 包含 MSBuild 对象模型用于生成项目的类型。
Microsoft.Build.Framework 全部 包含定义任务和记录器与 MSBuild 引擎的交互方式的类型。
Microsoft.Build.Framework.Profiler 全部 包含支持性能分析的类型。
Microsoft.Build.Framework.XamlTypes 仅限 .NET Framework 包含用于表示根据文件、规则和其他源分析的 XAML 类型的类。
Microsoft.Build.Globbing 全部 包含支持通配符处理的类。
Microsoft.Build.Globbing.Extensions 全部 包含支持通配符处理扩展的类型。
Microsoft.Build.Graph 全部 包含支持 -graph MSBuild 开关的类型。
Microsoft.Build.Logging 全部 包含用于记录生成进度的类型。
Microsoft.Build.ObjectModelRemoting 全部 包含支持 MSBuild 中的远程处理的类型。
Microsoft.Build.Tasks 全部 包含 MSBuild 附带的所有任务的实现。
Microsoft.Build.Tasks.Deployment.Bootstrapper 仅限 .NET Framework 包含 MSBuild 在内部使用的类。
Microsoft.Build.Tasks.Deployment.ManifestUtilities 仅限 .NET Framework 包含 MSBuild 使用的类。
Microsoft.Build.Tasks.Hosting 全部 包含 MSBuild 在内部使用的类。
Microsoft.Build.Tasks.Xaml 仅限 .NET Framework 包含与 XAML 生成任务相关的类。
Microsoft.Build.Utilities 全部 包含可用于创建你自己的 MSBuild 记录器和任务的帮助程序类。

在上表中,“适用对象”列中的“所有”表示命名空间中的类型在 .NET Framework 版和 .NET Core 版的 MSBuild API 中可用。