使用 MSBuild

MSBuild 提供了一种定义完善的可扩展 XML 格式,用于创建项目文件,用于完全描述要生成的项目项、生成任务和生成配置。

常规 MSBuild 注意事项

MSBuild 项目文件(例如 Visual C# .csproj 和 Visual Basic .vbproj 文件)包含生成时使用的数据,但也可能包含在设计时使用的数据。 生成时数据是使用 MSBuild 基元存储的,包括 Item 元素(MSBuild)Property 元素(MSBuild)。 设计时数据(特定于项目类型和任何相关项目子类型的数据)存储在为其保留的自由格式 XML 中。

MSBuild 对配置对象没有本机支持,但提供用于指定特定于配置的数据的条件属性。 例如:

<OutputDir Condition="'$(Configuration)'=="release'">Bin\MyReleaseConfig</OutputDir>

有关条件属性的详细信息,请参阅 条件构造

扩展项目类型的 MSBuild

将来版本的 Visual Studio 中可能会更改 MSBuild 接口和 API。 因此,谨慎使用托管包框架 (MPF) 类,因为它们提供对更改的防护。

用于项目的托管包框架(MPFProj)提供用于创建新项目系统的帮助程序类。 可以在 MPF for Projects - Visual Studio 2013 中找到源代码和编译说明。

特定于项目的 MPF 类如下所示:

实现
Microsoft.VisualStudio.Package.ProjectNode IVsProject3

IVsCfgProvider2

IPersistFileFormat

IVsSolutionEvents
Microsoft.VisualStudio.Package.ProjectFactory IVsProjectFactory
Microsoft.VisualStudio.Package.HierarchyNode IVsHierarchy
Microsoft.VisualStudio.Package.ProjectConfig IVsCfg

IVsProjectCfg

IVsBuildableProjectCfg

IVsDebuggableProjectCfg
Microsoft.VisualStudio.Package.SettingsPage IPropertyPageSite

Microsoft.VisualStudio.Package.ProjectElement 类是 MSBuild 项的包装器。

单个文件生成器与 MSBuild 任务

单个文件生成器只能在设计时访问,但 MSBuild 任务可在设计时和生成时使用。 因此,为了获得最大的灵活性,请使用 MSBuild 任务来转换和生成代码。 有关详细信息,请参阅 自定义工具