次の方法で共有


方法: プロジェクトが Visual Studio の複数のバージョンで読み込むようにプロジェクト システムを変更する

Visual Studio 2012では、修正、変換、または非推奨が必要な場合は、旧バージョンの Visual Studio の読み込みからカスタム プロジェクト システムで作成された、または以降のバージョンに合わせて識別できるようにするには、プロジェクトを防ぐことができます。

注意

このコンテキストでは、以降のバージョンで作成された Visual Studio のバージョンで自動的に読み込むことができるようにプロジェクトを変更する用語の 修正の メジャー。作成されたバージョンでは読み込むことができないように変換、または アップグレードは、プロジェクトの変更を意味します。

プロジェクトに対応しないマークします。

Visual Studio の旧バージョンに対応しないようにプロジェクトをマークできます。 たとえば Visual Studio 2012 で .NET Framework 5 の機能を使用するプロジェクトを作成するとします。 このプロジェクトを Visual Studio 2010 SP1 でビルドできないため、このバージョンがそれを読み込むようにしないように Visual Studio 2010 SP1 に対応しないように指定できます。

互換性のない機能を追加するコンポーネントは、対応しないようにプロジェクトを設定する必要があります。 コンポーネントは、プロジェクトを表す IVsHierarchy インターフェイスへのアクセスが必要です。

プロジェクトを互換性のないとしてマークするには

  1. Visual Studio は対応しないようにプロジェクトを識別するときに、対応しないように指定されたすべてのプロジェクトをマークするための入力を求めるダイアログ ボックスが表示されます。 互換性のないようにプロジェクトをマークすることに同意する場合 AskForUserConsentToBreakAssetCompat は、コンポーネントに S_OK を返します。; それ以外の場合は OLE_E_PROMPTSAVECANCELLEDを返します。

    注意

    ほとんどの一般的なシナリオでは、 IVsHierarchy の配列は、 1 種類の項目のみが含まれます。

  2. AskForUserConsentToBreakAssetCompat が S_OKを返す場合、コンポーネントは互換性に影響する変更を加えるか、受け取ります。

重要

互換性のあるか対応しないようにプロジェクトをマークするに VSHPROPID_MinimumDesignTimeCompatVersion のプロパティを実装する必要があります。たとえば、プロジェクト システムが MSBuild プロジェクト ファイルを使用している場合は、プロジェクト ファイルに VSHPROPID_MinimumDesignTimeCompatVersion の対応するプロパティ値に一致する値を設定 <MinimumVisualStudioVersion> のビルド プロパティを追加します。

プロジェクトが互換性のないかどうかを検出します

Visual Studio の現在のバージョンに対応しないプロジェクトが読み込まれなくする必要があります。 さらに、互換性のないプロジェクトにアップグレードされたか、修復できません。 したがって、プロジェクトは互換性を持つようにして確認する必要があります: 読み込まれる前に、アップグレードを修正するために使用される、および秒のときには。

プロジェクトの非互換性を検出できるようにするには、 UpgradeProject_CheckOnlyCreateProject のメソッドを実装します。 プロジェクトに互換性がない場合、 UpgradeProject_CheckOnly は成功コード VS_S_INCOMPATIBLEPROJECT を返し、 CreateProject はエラー コード VS_E_INCOMPATIBLEPROJECTを返す必要があります。

注意

また CreateProjectへの後続の呼び出しで使用できるように UpgradeProject_CheckOnly のメソッドによって互換性チェックの結果をキャッシュできます。

たとえば、 Visual Studio 2010 SP1 プロジェクト システムに対して記述された UpgradeProject_CheckOnly と CreateProject 、プロジェクト ファイルを確認し、 <MinimumVisualStudioVersion> のビルド プロパティが 「11.0」であるなった場合は、 Visual Studio 2010 SP1 では、プロジェクトを読み込みません。 また、 ソリューションのナビゲーター は、プロジェクトが 「互換性のない」し、それを読み込みません。

プロジェクトのアップグレード、修復します

Visual Studio 2010 SP1 では、旧バージョンの Visual Studio で作成されたほとんどのプロジェクトを変換できます。 Visual Studio 2012 は、これだけでなく、どちらのバージョンでも読み込むことができるように、旧バージョンで作成された特定の種類のプロジェクトを変更することもできます。

プロジェクトを読み込む前に、プロジェクトをアップグレードすることができるかどうかを確認するに UpgradeProject_CheckOnly のメソッドをダイヤルします。 プロジェクトをアップグレードできる場合 UpgradeProject_CheckOnly のメソッドは UpgradeProject のメソッドに以降の呼び出しがプロジェクトをアップグレードするフラグを設定します。 互換性のないプロジェクトをアップグレードすることはできないため UpgradeProject_CheckOnly は、前のセクションで説明したように、プロジェクトに互換性があるかを最初に確認する必要があります。

Visual Studio 2012では、読み込まれる前にプロジェクトが修復できるかどうかを確認するに UpgradeProject_CheckOnly を実行できます。 プロジェクトが修復することができます UpgradeProject_CheckOnly は成功コード VS_S_PROJECTREPAIRONLYUPGRADEREQUIREDを返す必要があります。 可能なアップグレードの必要条件は VSPUVF_REPAIRFLAGSで列挙され、次の点が含まれています:

  1. SPUVF_PROJECT_NOREPAIR: 修正を必要としません。

  2. VSPUVF_PROJECT_SAFEREPAIR: プロジェクトを、以前のバージョンの製品の検出を持っている可能性のある問題せずに Visual Studio 2010 と互換性のあるになります。

  3. VSPUVF_PROJECT_UNSAFEREPAIR: 製品の以前のバージョンに発生する可能性があります。プロジェクトを Visual Studio 2010 と問題のリスクと互換性のあるになります。 たとえば、プロジェクトに Visual Studio 2012 と Visual Studio 2010 SDK の間の異なるバージョンに依存の互換性がありません。

  4. VSPUVF_PROJECT_ONEWAYUPGRADE: プロジェクトを Visual Studio 2010 に対応しないします。

  5. VSPUVF_PROJECT_INCOMPATIBLE: Visual Studio 2012 がこのプロジェクトをサポートしないことを示します。

  6. VSPUVF_PROJECT_DEPRECATED: このプロジェクトがサポートされなくなったことを示します。

プロジェクト システムが (たとえば、 Visual Basic または C# プロジェクト システムは、ネットワーク、 Office (VSTO)、 Silverlight、その上に組み込まれている他のプロジェクトの種類があります)風味を付けられている場合、これらのプロジェクトのフレーバーは IVsProjectFlavorUpgradeViaFactory2 インターフェイスからの関数 UpgradeProjectFlavor_CheckOnly を実行する場合があります。 この関数作業を行うには、 IVsProjectUpgradeViaFactory4. UpgradeProject_CheckOnly の実装によって参照される前の先頭に、呼び出し。 これを Visual Basic または C# ベースで既にプロジェクト システム実行されることに注意してください)。 この関数の効果は、判別がプロジェクトのフレーバーが基本プロジェクト システムが判定内容に加えて、プロジェクトのアップグレードの必要条件が許可されます。 互換性のダイアログ ボックスは、次の 2 種類の要件の重大なの示します。

マネージ実装では、この二つのインターフェイスは [Microsoft.VisualStudio.Shell.Interop.11.0.dll] のアセンブリで使用できます。

ソリューションのプロジェクトをアップグレードするか、または変換する必要がある場合 Visual Studio 2012 は、互換性のないプロジェクトとともにダイアログ ボックスで、示します。 提案された変更を加える場合 UpgradeProject のメソッドが呼び出され、アップグレード、修正が行われます。 UpgradeProject のメソッドは、変更が、旧バージョンの Visual Studio の読み込みからプロジェクトを防ぎ、そのときの対応しないようにプロジェクトを表示するかどうかを判定します。 たとえば、 SP1 と Visual Studio 2010 でプロジェクトを作成し、 Visual Studio 2012のプロジェクトを開く場合があります。 アップグレードを修正、可能な場合、ダイアログ ボックスに、変更を加えるためにを呼び出すことです。 同意すると、プロジェクトが変更され、次に読み込まれます。ソリューションを閉じてから SP1 の Visual Studio 2010 の再開している場合、アップグレードされたプロジェクトは対応しない見なされ、修復したプロジェクトが正しく読み込みます。