使用 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 任务来转换和生成代码。 有关详细信息,请参阅 自定义工具。