以前のバージョンの Visual Studio からの C++ プロジェクトのアップグレード
以前のバージョンの Visual Studio で作成されたプロジェクトをアップグレードするには、最新バージョンの Visual Studio でプロジェクトを開きます。 Visual Studioプロジェクトを現在のスキーマにアップグレードできます。
[いいえ] を選択した場合、プロジェクトはアップグレードされません。 2010 Visual Studio 以降で作成されたプロジェクトの場合でも、新しいバージョンの Visual Studio でプロジェクトを使用できます。 古いツールセットを引き続き対象とするには、プロジェクトのプロパティを設定します。 コンピューター上に古いバージョンの Visual Studio をそのまま使用する場合、そのツールセットは新しいバージョンで使用できます。 たとえば、Windows XP でプロジェクトを引き続き実行する必要がある場合、Visual Studio 2019 にアップグレードできます。 次に、プロジェクトのプロパティで、v141_xp 以前としてツールセットを指定します。 詳細については、「Visual Studio でネイティブ マルチ ターゲットを利用し、古いプロジェクトを作成する」を参照してください。
[はい] を選択すると、プロジェクトが適切にアップグレードされます。 以前のバージョンに変換して戻す必要があります。 アップグレード シナリオでは、既存のプロジェクト ファイルとソリューション ファイルのバックアップ コピーを作成する方法が良い理由です。
Note
Visual Studio 2022 では、あるプロジェクトの種類または.dsp
拡張機能のアップグレードのサポートが.dsw
非推奨になりました。 以前のバージョンの Visual Studio (Visual Studio 2019 など) を使用してこれらのプロジェクトをアップグレードし、Visual Studio 2022 でアップグレードして、Visual Studio の最新のツールと機能を使用できます。
レポートのアップグレード
プロジェクトをアップグレードすると、アップグレード レポートが表示されます。 また、レポートはプロジェクト フォルダーにも UpgradeLog.htm として保存されます。 アップグレード レポートには、変換中に検出された問題の概要が表示されます。 次のような変更に関する情報が一覧表示されます:
プロジェクトのプロパティ。
インクルード ファイル。
コンパイラ準拠の強化または標準の変更により、正常にコンパイルされなくなったコード。
使用できなくなった Visual Studio または Windows 機能に依存するコード。 または、Visual Studio の既定のインストールに含まれていないヘッダー ファイル、または製品から削除されたヘッダー ファイル。
API の名前変更、関数シグネチャの変更、非推奨の関数など、API の変更によってコンパイルされなくなったコード。
警告がエラーになるなど、診断の変更によってコンパイルされなくなったコード
特に /NODEFAULTLIB が使用される場合の、変更されたライブラリによるリンカー エラー。
動作の変更による実行時エラーまたは予期しない結果。
ツールで導入されたエラー。 問題が発生した場合には、通常のサポート チャネルを通じて、または Visual Studio C++ 開発者コミュニティ ページを使用して、Visual C++ チームに報告してください。
アップグレードされたプロジェクトおよびソリューションの一部くが、変更なしで正常にビルドできます。 ただし、ほとんどのプロジェクトでは、プロジェクト設定とソース コードの両方を変更する必要があります。 これらの問題を修正する正しい方法は 1 つはありません。ただし、段階的なアプローチを使用することをお勧めします。 開始する前に、「アップグレードに関する 潜在的な問題の概要」 で、さまざまな種類の一般的なエラーの詳細を確認してください。
プラットフォーム ツールセット、C++ 言語標準、および Windows SDK バージョン (該当する場合) を優先バージョンに設定します。 (プロジェクト>プロパティ>プロパティの構成>一般)
エラーが多い場合は、修正中に一部のオプションを一時的にオフにできます。
/permissive-
オプションをオフにするには、[プロジェクト]>[プロパティ]>[プロパティの構成]>[C/C++]>[言語] を使用します。 [コード分析] オプションをオフにするには、[プロジェクト]>[プロパティ]>[プロパティの構成]>[コード分析] を使用します。すべての依存関係が存在し、含めるパスまたはライブラリの場所を確認します。 ([プロジェクト]>[プロパティ]>[プロパティの構成]>[VC++ ディレクトリ])
存在しなくなった API への参照によって発生するエラーを特定して修正します。
コンパイルを妨げる残りのエラーを修正します。 一般的な エラーの修正については、「潜在的なアップグレードの問題の概要」 を参照してください。
/permissive-
の設定を戻し、以前に MSVC でコンパイルした非準拠のコードが原因で発生した新しいエラーを修正します。コード分析を有効にし、許容可能と見なされなくなった潜在的な問題や古いコーディング パターンを特定します。 コード分析で多くのエラーにフラグが設定されている場合は、警告の一部をオフすると、最初に最も重要な警告に注力できます。 IDE は、いくつかの種類の問題のクイック修正に役立ちます。
コードを最新化する他の機会を検討してください。 たとえば、カスタム データ構造とアルゴリズムを C++ 標準ライブラリまたは Boost オープンソース ライブラリのデータ構造に置き換えるなどです。 標準機能を使用すると、他のユーザーがコードを簡単に管理できます。 このコードは、標準委員会とより広範な C++ コミュニティに関する多くの専門家によって十分にテストされ、レビューされたと確認済みです。
修正が困難なエラーの場合は、解決策を検索したり、Microsoft Learn Q&A に質問を投稿したりできます。 C++ コンパイラとツールの問題については、C++ Developer Community をご利用ください。
このセクションの内容
アップグレード時の潜在的な問題の概要
Universal CRT へのコードのアップグレード
WINVER と_WIN32_WINNTの更新
ライブラリ内部の依存関係を修正する
浮動小数点の移行に関する問題
Visual Studio で非推奨になった C++ 機能
VCBuild と MSBuild
サード パーティ製ライブラリの移植
関連項目
Visual Studio の Visual C++ の新機能
Visual C++ 2003 ~ 2015 の変更履歴
非標準動作
ポート データ アプリケーション