MSBuild には、ビルドするプロジェクト項目、ビルド タスク、ビルド構成を完全に記述するプロジェクト ファイルを作成するための、明確に定義された拡張可能な XML 形式が用意されています。
MSBuild に関する一般的な考慮事項
MSBuild プロジェクト ファイル (Visual C# .csproj ファイルや Visual Basic .vbproj ファイルなど) には、ビルド時に使用されるデータが含まれますが、デザイン時に使用されるデータを含めることもできます。 ビルド時データは、 Item 要素 (MSBuild) や Property Element (MSBuild) などの MSBuild プリミティブを使用して格納されます。 デザイン時データは、プロジェクトの種類と関連するプロジェクト サブタイプに固有のデータであり、そのデータ用に予約された自由形式の XML に格納されます。
MSBuild では、構成オブジェクトのネイティブ サポートはありませんが、構成固有のデータを指定するための条件付き属性が提供されます。 例えば次が挙げられます。
<OutputDir Condition="'$(Configuration)'=="release'">Bin\MyReleaseConfig</OutputDir>
条件付き属性の詳細については、「 条件付きコンストラクト」を参照してください。
プロジェクトの種類に合わせて MSBuild を拡張する
MSBuild インターフェイスと API は、今後のバージョンの Visual Studio で変更される可能性があります。 そのため、マネージド パッケージ フレームワーク (MPF) クラスは変更からのシールドを提供するため、使用することが賢明です。
Managed Package Framework for Projects (MPFProj) には、新しいプロジェクト システムを作成および管理するためのヘルパー クラスが用意されています。 ソース コードとコンパイル手順については、 MPF for Projects - Visual Studio 2013 を参照してください。
プロジェクト固有の MPF クラスは次のとおりです。
| クラス | Implementation |
|---|---|
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 タスク
1 つのファイル ジェネレーターにはデザイン時にのみアクセスできますが、MSBuild タスクはデザイン時とビルド時に使用できます。 そのため、柔軟性を最大限に高めるために、MSBuild タスクを使用してコードを変換および生成します。 詳細については、「 カスタム ツール」を参照してください。