共有 VSPackage と バージョン管理 VSPackage の選択
異なるバージョンの Visual Studio を同じコンピューター上で共存させることができます。 VSPackage では、任意のバージョンの Visual Studio を組み合わせることができます。
Vspackage のサイドバイサイドインストールは、2 つの戦略 (共有戦略またはバージョン管理された戦略) のいずれかを使用して有効にすることができます。 どちらを使用しても、複数のバージョンの Visual Studio と .NET Framework の関連バージョンを共存させることができます。
共有戦略では、1 つの VSPackage が複数のバージョンの Visual Studio 用に登録されます。 バージョン管理された戦略では、複数の VSPackage DLL がインストールされ、それぞれがサポートする Visual Studio の各バージョンに対応します。
共有 Vspackage
共有 VSPackage は、複数のバージョンの Visual Studio で同じ VSPackage を使用する場合に適しています。 共有 VSPackage を実装するには、次の手順を実行する必要があります。
VSPackage と複数のバージョンの Visual Studio との互換性を確保します。 これを行うには、次の 2 つの方法があります。
サポートする最も古いバージョンの Visual Studio の機能のみを使用するように、VSPackage を制限します。
VSPackage が実行されている Visual Studio のバージョンに合わせて、それをプログラムします。 これで、新しいサービスのクエリが失敗した場合に、VSPackage では、以前のバージョンの Visual Studio でサポートされている他のサービスを提供できます。
VSPackage を適切に登録します。 詳細については、「VSPackage の登録」およびマネージド VSPackage の登録に関するページを参照してください。
ファイル拡張子を適切に登録します。 詳細については、side-by-side 配置に対してファイル名拡張子を登録する方法に関するページを参照してください。
適切なバージョンの Visual Studio 用の VSPackage を展開するインストーラーを作成します。 詳細については、「Windows インストーラーによる VSPackage のインストール」および「コンポーネント管理」を参照してください。
登録の競合に関する問題に対処します。 詳細については、「VSPackage の登録」を参照してください。
共有およびバージョン付きファイルの両方で、複数のバージョンを安全にインストールおよび削除できるように、参照カウントが考慮されていることを確認します。 詳細については、「コンポーネント管理」を参照してください。
バージョン管理された Vspackage
バージョン管理された VSPackage 戦略では、サポートする Visual Studio のバージョンごとに 1 つの VSPackage を作成します。 各 VSPackage を他に影響を与えずに拡張できるため、この方法は、以降のバージョンの Visual Studio で提供されるサービスを利用することが予想される場合に適しています。 ただし、バージョン管理された戦略では、1 つのコード ベースまたは複数の独立したコード ベースから複数のバイナリを作成するので、共有戦略に比べて多くの初期開発が必要になる場合があります。 また、追加のセットアップ作業が必要になることがあります。これは、各バージョンに対して個別のセットアップを作成するか、インストールされている Visual Studio のバージョンと VSPackage でサポートされているものを検出する 1 つのセットアップを作成する必要があるためです。
バイナリの互換性
一般に、バイナリの互換性を使用すると、以前のバージョンの Visual Studio で開発されたネイティブコードの Vspackage を、新しいバージョンの Visual Studio で実行できるようになります。 ただし、重要な例外として、次の 3 つの点があります。
VSPackage が特定のバージョンの共通言語ランタイムに依存している場合は、それが実行されている Visual Studio のバージョンを確認する必要があります。
VSPackage は、別の VSPackage または別の製品の特定の機能に依存している場合があります。 その結果、VSPackage は依存関係が満たされている場所でのみ実行できます。
VSPackage は、Visual Studio Service Pack または以降のバージョンの Visual Studio のセキュリティ修正プログラムの影響を受けることがあります。 このような場合、セキュリティ修正プログラムが適用されると、以前のバージョンの Visual Studio SDK で開発された VSPackage は、Visual Studio の他のバージョンでは実行されない場合があります。 ただし、新しいバージョンでリビルドされたパッケージは、以前のバージョンでも実行することができます。
マネージド VSPackage は、Visual Studio のターゲット バージョンに一致するバージョンの Visual Studio と Visual Studio SDK を使用してビルドする必要があります。
VSPackage バイナリのバイナリ互換性を計画するだけでなく、ソリューションとプロジェクト ファイルの形式も考慮する必要があります。 VSPackage で新しいプロジェクト タイプを作成する場合、1 つのバージョンのみか、複数バージョンの Visual Studio のどちらで実行できるようにするかを決定する必要があります。 詳細については、「カスタム プロジェクトのアップグレード」を参照してください。