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