Visual Studio でネイティブ マルチターゲットを利用し、古いプロジェクトを作成する

通常、最新バージョンの Visual Studio をインストールするときには、プロジェクトを更新することをお勧めします。 プロジェクトとコードの更新のコストは、多くの場合、新しい IDE、コンパイラ、ライブラリ、およびツールのメリットで十分補うことができます。 ただし、いくつかのプロジェクトを更新できないことがわかっています。 古いライブラリやメンテナンス上の理由からアップグレードすることできないプラットフォームに関連付けられているバイナリがあるかもしれません。 より新しいコンパイラに移動した場合に壊れる非標準の言語構成要素をコードで使用している場合があります。 Visual C++ の特定のバージョン用にコンパイルされたサードパーティ製のライブラリにコードが依存している場合があります。 または、特定の古いバージョンの Visual C++ を対象にする必要がある他のライブラリを生成することがあります。

さいわい、以前のコンパイラ ツールセットとライブラリを対象にしたプロジェクトのビルドに、Visual Studio を使用できます。 元のツールがまだインストールされている場合は、IDE の新機能を利用するために、プロジェクトを Visual Studio 2010 までさかのぼってアップグレードする必要はありません。

  • 新しい C++ のリファクタリング機能およびエディターの試験的な機能
  • 新しい診断ツール デバッガー ウィンドウと [エラー一覧] ウィンドウ
  • 刷新されたブレークポイント、例外処理ウィンドウ、および新しい PerfTips
  • 新しいコード ナビゲーションおよび検索ツール
  • 新しい C++ クイック修正および Productivity Power Tools 拡張機能

Visual Studio 2008 プロジェクトを対象とすることもできますが、そのまま使用することはできません。 詳細については、「Visual Studio 2008 での手順」を参照してください。

最新バージョンの Visual Studio では、ネイティブ マルチターゲットとプロジェクトのラウンドトリップをサポートします。 ネイティブ マルチターゲットは、Visual Studio の以前のバージョンでインストールされたツールセットを使用してビルドできる最新の IDE の機能です。 ラウンド トリップは、プロジェクトに変更を加えずに以前のバージョンの IDE で作成されたプロジェクトを読み込むことができる最新の IDE の機能です。 既存のバージョンと Visual Studio の最新バージョンを両方インストールする場合、IDE の新しいバージョンを既存のバージョンのコンパイラやツールと併用して、プロジェクトをビルドすることができます。 チームの他のメンバーは、古いバージョンの Visual Studio でプロジェクトを引き続き使用できます。

古いツールセットを使用する場合は、最新の IDE の多くの機能を使用できますが、C++ コンパイラ、ライブラリ、およびビルド ツールの最新の高度な機能は使用できません。 たとえば、新しい言語の準拠の強化や新しいデバッグおよびコード分析機能を利用することも、最新のツールセットで高速なビルド スループットを実現することもできません。 古いツールセットと互換性がない IDE 機能もいくつかあります。 たとえば、型情報がメモリ プロファイラーに見つからない可能性があり、リファクタリング操作の未加工の文字列リテラルへの変換で C++11- 準拠のコードが生成され、Visual Studio 2012 または以前のツールセットを使用するときにそのコードがコンパイルされないことがあります。

Visual Studio でネイティブ マルチターゲットを使用する方法

以前のバージョンと Visual Studio を並列でインストールした後は、新しいバージョンの Visual Studio で、既存のプロジェクトが開かれます。 プロジェクトが読み込まれると、Visual Studio が、最新の C++ コンパイラおよびライブラリを使用するようにアップグレードするかどうかを確認します。 プロジェクトで以前のコンパイラおよびライブラリを保持する必要があるので、[キャンセル] ボタンをクリックします。

Visual Studio では、プロジェクトのアップグレードが何度も要求されます。 プロジェクトを読み込むたびにアップグレードのダイアログを表示しないようにするには、プロジェクトまたはプロジェクトでインポートされる .props ファイルまたは .targets ファイルに、次のプロパティを定義します。

<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>

プロジェクトをアップグレードする場合は、このプロパティを削除する必要があります。

アップグレードしないことを選択した場合は、Visual Studio はソリューションまたはプロジェクト ファイルを変更しません。 プロジェクトをビルドするときに、生成されたバイナリは、以前のバージョンの Visual Studio でビルドしたものと完全に互換性があります。これは Visual Studio が同じ C++ コンパイラを使用し、以前の IDE に含まれていたのと同じライブラリをリンクするためです。 アップグレード ダイアログで [キャンセル] を選択した場合に、インストールされている古いバージョンの Visual Studio を保持するように促す警告が表示されるのもこのためです。

Visual Studio 2008 での手順

Visual Studio 2008 には、VCBuild という名前の C++ 専用のビルドシステムがありました。 Visual Studio 2010 では、MSBuild を使用するように Visual Studio C++ プロジェクトが変更されました。 永続的なアップグレードであっても複数ターゲットのアップグレードであっても、最新バージョンの Visual Studio で Visual Studio 2008 プロジェクトをビルドするためには、更新手順を踏む必要があります。 更新されたプロジェクトでは、Visual Studio 2008 IDE を使用して作成されたバイナリと完全に互換性があるバイナリを引き続き生成します。

最初に、Visual Studio の現在のバージョンだけでなく、Visual Studio 2008 と同じコンピューターに Visual Studio 2010 をインストールする必要があります。 Visual Studio 2008 プロジェクトを対象とするために必要な MSBuild スクリプトをインストールするのは、Visual Studio 2010 のみです。

次に、Visual Studio 2008 のソリューションとプロジェクトを Visual Studio の現在のバージョンに更新する必要があります。 アップグレードの前に、プロジェクトおよびソリューション ファイルのバックアップを作成することをお勧めします。 アップグレード プロセスを開始するには、現在のバージョンの Visual Studio でソリューションを開きます。 アップグレードのプロンプトが表示された場合、表示された情報を確認し、[OK] を選択してアップグレードを開始します。 ソリューションに複数のプロジェクトがある場合は、各プロジェクトを更新する必要があります。 ウィザードによって、新しい .vcxproj プロジェクト ファイルが既存の .vcproj ファイルとサイドバイサイドで作成されます。 元の .sln ファイルのコピーを保持する限り、アップグレードによる既存の Visual Studio 2008 プロジェクトへの他の影響はありません。

Note

次の手順は、複数ターゲットのシナリオだけに適用されます。 プロジェクトを後のツールセットに永続的にアップグレードする場合は、次の手順として、プロジェクトを保存し、最新バージョンの Visual Studio で開き、そこに表示されるビルドの問題を解決します。

アップグレードが完了したときに、ログ レポートにいずれかのプロジェクトのエラーまたは警告がある場合は、それらを慎重に確認します。 VCBuild から MSBuild への変換には、問題が発生する可能性があります。 レポートに表示されるすべてのアクション項目を理解して実装したことを確認してください。 アップグレード ログのレポートおよび VCBuildMSBuild に変換するときに発生する可能性のある問題の詳細については、「C++ ネイティブ マルチターゲット」のブログ記事を参照してください。

アップグレードが完了し、ログ ファイル内の問題を修正すると、ソリューションは最新のツールセットを対象とするようになります。 最後の手順として、Visual Studio 2008 のツールセットを使用するようにソリューション内の各プロジェクトのプロパティを変更します。 現在のバージョンの Visual Studio ソリューションでソリューションを読み込んだ状態で、プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。[ソリューション エクスプローラー] でプロジェクトを右クリックし、[プロパティ] を選択します。 [プロパティ ページ] ダイアログ ボックスで、 [構成] ドロップダウン リストの値を [すべての構成] に変更します。 [構成プロパティ][全般] を選択し、 [プラットフォーム ツールセット]Visual Studio 2008 (v90) に変更します。

この変更後、現在のバージョンの Visual Studio でソリューションをビルドするときに、Visual Studio 2008 のコンパイラとライブラリが使用されます。

以前の Visual Studio ツールセットをインストールします。

アップグレードできないか、それを希望しない、以前の Visual Studio C++ プロジェクトがある場合があります。 それをビルドするには、プロジェクトに合ったバージョンのプラットフォーム ツールセットが必要です。 ツールセットを取得するには、無料の Visual Studio Community または Express エディションの必要なバージョンをインストールできます。 Visual Studio 2008 からのすべてのバージョンで、現在の Visual Studio のバージョンからそのバージョンをターゲットにするために必要なコンパイラ、ツール、およびライブラリをインストールできます。 Microsoft ダウンロード センターで特定のバージョンの Visual Studio を検索してダウンロードしてください。 セットアップ中に、C++ のインストール オプションを選択したことを確認してください。 セットアップの完了後は、そのバージョンの Visual Studio を実行して更新をインストールします。 また、必要になる可能性がある Windows Update の変更を確認します。 すべての更新プログラムを取得するには、この更新プログラムの確認処理を複数回繰り返す必要があります。

現在利用できるダウンロードについては、以前の Visual Studio ソフトウェアのダウンロードに関するページを参照してください。

これらの製品がインストールされているときに、[プロパティ ページ] ダイアログ ボックスの [プラットフォーム ツールセット] プロパティ ドロップダウンの一覧が自動的に更新され、使用できるツールセットが表示されます。 最新バージョンの Visual Studio を使用して、旧バージョンのツールセットを使用しているプロジェクトをビルドできるようになりました。変換もアップグレードも必要ありません。

関連項目

旧バージョンの Visual C++ からのプロジェクトのアップグレード
Visual Studio の C++ 準拠の強化