VCBuild と MSBuild: Visual Studio 2010 のビルド システムの変更
Visual Studio 2010 では、C++ プロジェクトに MSBuild システムが導入されました。 Visual Studio 2008 以前のリリースでは、VCBuild システムが使用されていました。 VCBuild に依存していた一部のファイルの種類や概念は、MSBuild には存在しないか、別の形で表現されます。 このドキュメントでは、現在のビルド システムにおける違いについて説明します。 2008 Visual Studio プロジェクトをMSBuild に変換するには、Visual Studio 2010 を使用する必要があります。 プロジェクトが変換された後、最新バージョンの Visual Studioを使用して、最新の IDE およびコンパイラ ツールセットにアップグレードする必要があります。 Visual Studio 2010 の取得方法を含め、詳細については、「Visual Studio 2008 での手順」を参照してください。
次のセクションでは、VCBuild から MSBuild への変更について概要を説明します。 VCBuild プロジェクトに MSBuild で認識されないカスタム ビルド規則またはマクロがある場合は、「Visual Studio プロジェクト - C++」を参照して、これらの命令を MSBuild システムに変換する方法を確認してください。 VCBuild から MSBuild への最初の変換は、単なる中間的なステップです。 プロジェクト ファイルを完全に正しく取得したり、プログラムをエラーなしでコンパイルしたりする必要はありません。 Visual Studio 2010 のみを使用してプロジェクトを MSBuild 形式に変換し、最新バージョンの Visual Studio でプロジェクトが動作するようにします。
.vcproj が .vcxproj になりました
プロジェクト ファイルには .vcproj というファイル名拡張子が使用されなくなりました。 Visual Studio 2010 では、Visual C++ の以前のリリースで作成されたプロジェクト ファイルが MSBuild 形式に自動的に変換されます。この形式では、プロジェクト ファイルに .vcxproj 拡張子が使用されます。
.vsprops が .props になりました
"プロジェクト プロパティ シート" は XML ベースのファイルで、Visual Studio 2008 以前では .vsprops というファイル名拡張子でした。 プロジェクト プロパティ シートを利用すれば、コンパイラやリンカーなどのビルド ツールのスイッチを指定したり、ユーザー定義のマクロを作成したりできます。 MSBuild のプロジェクト プロパティ シートのファイル名拡張子は .props となります。
カスタム ビルド規則と .rules ファイル
"規則ファイル" は XML ベースのファイルで、Visual Studio 2008 では .rules というファイル名拡張子でした。 ルール ファイルを利用すれば、カスタム ビルド ルールを定義し、それを Visual Studio C++ プロジェクトのビルド プロセスに組み込むことができます。 カスタム ビルド ルールには 1 つまたは複数のファイル名拡張子を関連付けることができるため、このルールを利用すると、1 つまたは複数の出力ファイルを作成するツールに入力ファイルを渡すことができます。
MSBuild システムでは、カスタム ビルド規則は、.rules ファイルではなく、.xml、.props、.targets という 3 種類のファイルで表されます。 以前のリリースの Visual C++ を使用して作成された .rules ファイルを Visual Studio 2010 に移行すると、同等の .xml、.props、.targets ファイルが作成され、元の .rules ファイルと共にプロジェクトに保存されます。
重要
2010 Visual Studio の IDE では、新しい規則の作成はサポートされていません。 そのため、以前のリリースの Visual C++ で作成されたプロジェクトの規則ファイルを使用する最も簡単な方法は、プロジェクトを Visual Studio 2010 に移行することです。
継承マクロ
Visual Studio 2008 以前では、プロジェクト ビルド システムで作成されたコマンド ラインに継承プロパティを表示する順序は $(Inherit) マクロによって指定されます。 $(NoInherit) マクロを使用すると、$(Inherit) が出現しても無視され、$(NoInherit) を使用しなければ継承されるプロパティがすべて継承されません。 たとえば、$(Inherit) マクロの既定では、/I (Additional Include Directories) コンパイラ オプションで指定されるファイルがコマンド ラインに追加されます。
Visual Studio 2010 では、1 つまたは複数のリテラル値とプロパティ マクロの連結としてプロパティ値を指定することで、継承がサポートされます。 $(Inherit) マクロと $(NoInherit) マクロはサポートされていません。
次の例では、プロパティ ページのプロパティにセミコロンで区切られた一覧が割り当てられています。 この一覧は <value> リテラルと MyProperty
プロパティの値を連結したもので構成されます。このプロパティは $(MyProperty) というマクロ表記を使用してアクセスされます。
Property=<value>;$(MyProperty)
.vcxproj.user ファイル
ユーザー ファイル (.vcxproj.user) によって、デバッグ設定やデプロイ設定など、ユーザー固有のプロパティが保管されます。 vcxproj.user ファイルは、特定のユーザーのすべてのファイルに適用されます。
.vcxproj.filters ファイル
filters ファイル (.vcxproj.filters) は、ソリューション エクスプローラーを使用してプロジェクトにファイルを追加するときに、ファイル名拡張子に基づいてソリューション エクスプローラーのツリー ビューでファイルを追加する場所を定義します。
VC++ ディレクトリ設定
Visual C++ ディレクトリ設定は [VC++ ディレクトリ プロパティ ページ] で指定されます。 Visual Studio 2008 以前では、ディレクトリ設定はユーザー別に適用され、除外ディレクトリの一覧が sysincl.dat ファイルに指定されます。
コマンド ラインで devenv /resetsettings を実行する場合、VC++ ディレクトリ設定を変更できません。 [ツール] メニューを開き、[設定のインポートとエクスポート] をクリックし、[すべての設定をリセット] オプションを選択した場合も設定を変更できません。
以前のリリースの Visual Studio で作成された .vssettings ファイルから VC++ ディレクトリ設定を移行するには:
- [ツール] メニューを開き、[設定のインポートとエクスポート] をクリックします
- [選択された環境設定をインポート] を選択します
- ウィザードの指示に従います。