面向 WDK 开发人员的 MSBuild 入门教程

本部分向熟悉 Build.exe 和 NMake.exe 的 WDK 开发人员介绍一些基本的 MSBuild 术语。 本部分介绍简单 MSBuild 项目的构造。

与 MSBuild 相关的 Nmake 概念

如果曾在 WDK 8) 之前使用过 Build.exe 和早期版本的 WDK (,则可能熟悉 NMake.exe 使用的术语和概念。

  • command - 调用命令行工具。
  • target - 描述命令的命名序列。
  • dependency - 描述依赖于其他目标的目标。
  • 在指定了一个或多个目标的生成文件上调用 Nmake。 然后,它以递归方式运行所有依赖项,然后运行目标的命令。
  • Nmake 文件可以包含用于可靠管理生成结构的其他生成文件。
  • Nmake 还支持创建将替换为命令参数的命名变量。
  • Nmake 还支持 Make.exe 本身分配的自动变量,例如,当前目录或路径的名称。
  • 在单个生成期间,目标永远不会运行两次。 运行后,假定目标已完成其工作,并且不会再次运行,即使生成中的后续目标依赖于它。

MSBuild 概念

  • C++ 项目的main MSBuild 文件扩展名是.vcxproj。

  • 命令现在称为 任务,它们不仅仅是命令行进程的调用。 相反,任务是 MSBuild 可用于执行原子生成操作的可执行代码单元。 有关任务的完整列表,请参阅 特定于 Visual C++ 的 MSBuild 任务

  • MSBuild 使用 UsingTask 元素从其公共语言运行时 (CLR) 程序集导入任务,如以下示例所示。

    <UsingTask TaskName="TaskName" AssemblyName="AssemblyName" />
    
  • 目标按特定顺序将任务组合在一起,并允许将生成过程划分为较小的单元。

  • PropertyGroup 允许使用人类友好格式定义属性。 以下示例显示了 PropertyGroup 格式。

    <PropertyGroup>
      <ProductVersion>9.0.30729</ProductVersion>
    </PropertyGroup>
    
  • Item属性的面向对象的变体。 虽然属性格式为 name/value,但项格式为名称/对象,其中对象具有多个属性。 是 对象的数组。

  • 属性格式 $ (项目) 引用,而项引用的格式为 @ (名称)

  • ItemGroup 是 Items 的集合

  • ItemGroups 通常是要编译的所有文件的列表。 然后使用 @ (itemname) 表示法将文件集合传递到任务。 有关使用项的详细信息,请参阅 MSBuild项。

  • MSBuild 具有许多 内置属性 ,你也可以在项目文件中引用这些属性。

  • 有关 MSBuild 和生成任务的详细信息,请参阅 MSBuild 概念MSBuild 参考