ソリューションの概要

ソリューションは、アプリケーションを作成するために連携する 1 つ以上のプロジェクトのグループです。 ソリューションに関連するプロジェクトおよびステータス情報は、2 つの異なるソリューション ファイルに保存されます。 ソリューション (.sln) ファイルはテキストベースであり、ソース コード管理下に置いてユーザー間で共有できます。 ソリューション ユーザー オプション (.suo) ファイルはバイナリです。 そのため、.suo ファイルはソース コード管理下に置くことはできず、ユーザー固有の情報が含まれています。

どの VSPackage も、どちらかの種類のソリューション ファイルに書き込むことができます。 ファイルの性質上、ファイルに書き込むために 2 つの異なるインターフェイスが実装されています。 IVsPersistSolutionProps インターフェイスはテキスト情報を .sln ファイルに書き込み、IVsPersistSolutionOpts インターフェイスはバイナリ ストリームを .suo ファイルに書き込みます。

Note

プロジェクトでは、それ自体のエントリをソリューション ファイルに明示的に書き込む必要はありません。これは、プロジェクトの代わりに環境によって処理されます。 そのため、特にソリューション ファイルにコンテンツを追加する必要がない場合は、この方法で VSPackage を登録する必要はありません。

ソリューションの永続化をサポートしているそれぞれの VSPackage では、3 つのインターフェイスを使用します。IVsSolutionPersistence インターフェイスは、環境によって実装され、VSPackage によって呼び出されます。IVsPersistSolutionPropsIVsPersistSolutionOpts は、どちらも VSPackage によって実装されます。 IVsPersistSolutionOpts インターフェイスを実装する必要があるのは、プライベートな情報が VSPackage によって .suo ファイルに書き込まれる場合だけです。

ソリューションが開かれると、次の処理が行われます。

  1. 環境によってソリューションが読み取られます。

  2. 環境で CLSID が検出された場合、対応する VSPackage が読み込まれます。

  3. VSPackage が読み込まれる場合、VSPackage が必要とするインターフェイスのために、環境によって IVsPackage インターフェイスの QueryInterface が呼び出されます。

    • .sln ファイルから読み取るときは、環境は IVsPersistSolutionPropsQueryInterface を呼び出します。

    • .suo ファイルから読み取るときは、環境は IVsPersistSolutionOptsQueryInterface を呼び出します。

    これらのファイルの使用に関する具体的な情報は 、ソリューション (.sln) ファイル および ソリューション ユーザー オプション (.suo) ファイルにあります。

Note

2 つのプロジェクトの構成で成り立ち、3 番目をビルドから除外する新しいソリューション構成を作成する場合は、プロパティページの UI またはオートメーションを使用する必要があります。 ソリューション ビルド マネージャーの構成とそのプロパティを直接変更することはできませんが、オートメーション モデルの DTE の SolutionBuild クラスを使用してソリューション ビルド マネージャーを操作できます。 ソリューションの構成の詳細については、「ソリューション構成」を参照してください。