ソリューションの概要
ソリューションは、アプリケーションを作成するために連携する 1 つ以上のプロジェクトのグループです。 ソリューションに関連するプロジェクトおよびステータス情報は、2 つの異なるソリューション ファイルに保存されます。 ソリューション (.sln) ファイルはテキストベースであり、ソース コード管理下に置いてユーザー間で共有できます。 ソリューション ユーザー オプション (.suo) ファイルはバイナリです。 そのため、.suo ファイルはソース コード管理下に置くことはできず、ユーザー固有の情報が含まれています。
どの VSPackage も、どちらかの種類のソリューション ファイルに書き込むことができます。 ファイルの性質上、ファイルに書き込むために 2 つの異なるインターフェイスが実装されています。 IVsPersistSolutionProps インターフェイスはテキスト情報を .sln ファイルに書き込み、IVsPersistSolutionOpts インターフェイスはバイナリ ストリームを .suo ファイルに書き込みます。
Note
プロジェクトでは、それ自体のエントリをソリューション ファイルに明示的に書き込む必要はありません。これは、プロジェクトの代わりに環境によって処理されます。 そのため、特にソリューション ファイルにコンテンツを追加する必要がない場合は、この方法で VSPackage を登録する必要はありません。
ソリューションの永続化をサポートしているそれぞれの VSPackage では、3 つのインターフェイスを使用します。IVsSolutionPersistence インターフェイスは、環境によって実装され、VSPackage によって呼び出されます。IVsPersistSolutionProps
と IVsPersistSolutionOpts
は、どちらも VSPackage によって実装されます。 IVsPersistSolutionOpts
インターフェイスを実装する必要があるのは、プライベートな情報が VSPackage によって .suo ファイルに書き込まれる場合だけです。
ソリューションが開かれると、次の処理が行われます。
環境によってソリューションが読み取られます。
環境で
CLSID
が検出された場合、対応する VSPackage が読み込まれます。VSPackage が読み込まれる場合、VSPackage が必要とするインターフェイスのために、環境によって IVsPackage インターフェイスの
QueryInterface
が呼び出されます。.sln ファイルから読み取るときは、環境は
IVsPersistSolutionProps
のQueryInterface
を呼び出します。.suo ファイルから読み取るときは、環境は
IVsPersistSolutionOpts
のQueryInterface
を呼び出します。
これらのファイルの使用に関する具体的な情報は 、ソリューション (.sln) ファイル および ソリューション ユーザー オプション (.suo) ファイルにあります。
Note
2 つのプロジェクトの構成で成り立ち、3 番目をビルドから除外する新しいソリューション構成を作成する場合は、プロパティページの UI またはオートメーションを使用する必要があります。 ソリューション ビルド マネージャーの構成とそのプロパティを直接変更することはできませんが、オートメーション モデルの DTE の SolutionBuild
クラスを使用してソリューション ビルド マネージャーを操作できます。 ソリューションの構成の詳細については、「ソリューション構成」を参照してください。