プロジェクトにおける項目の管理
Visual Studio には、アプリケーションの作成に必要な項目を提供する、さまざまなプロジェクト テンプレートが用意されています。 選択するプロジェクト テンプレートおよびプロジェクトにおける項目の管理方法によって、ソリューション エクスプローラーで使用できるコマンドや機能が変わります。 ファイルの保存場所はユーザーが制御できますが、その保存場所がファイルのビルドや管理において重要な意味を持つかどうかはプロジェクト テンプレートによって決まります。
ファイルの 2 種類の関連付け
ソリューション エクスプローラー内の項目は、多くの場合、特定のファイルを表しています。これらのファイルとプロジェクトは、2 種類の方法で関連付けることができます。 項目がファイルへのリンクを表す場合とファイル自体を表す場合があります。 リンクは、Windows エクスプローラーのショートカットに似ていますが、同じではありません。
単独のプロジェクトで作業していると、リンクを表す項目とファイル自体を表す項目との動作上の違いに気が付かない場合もあります。 しかし、複数のプロジェクト、[ソリューション項目] フォルダー、および [その他のファイル] フォルダーで作業する場合は、予想外の結果が生じる可能性があります。
リンクを表す項目とファイル自体を表す項目との違いが最も明確になるのは、Visual C++ プロジェクトと Web プロジェクトで同時に作業する場合です。 この違いを明らかにするために、ファイルをプロジェクトに関連付ける方法を示すいくつかのシナリオを見てみます。
リンクを管理するプロジェクト
プロジェクトの中には、プロジェクトのディレクトリ構造内にファイルを必要とせず、ファイルへのリンクだけを管理するプロジェクトもあります。 リンクは、ディスク上の物理ファイルのプロキシとして機能します。 このようなプロジェクトでは、必要になるファイル管理タスクは限られています。
たとえば、ファイルへのリンクだけを管理する場合、リンクを削除することはできますが、リンクを削除してもストレージのファイルは削除されません。 この種類の関連付けを使用すると、1 つのファイルを作成および管理して複数のプロジェクトで使用できます。
たとえば、Visual C++ プロジェクトの項目や [ソリューション項目] フォルダー内の項目はリンクです。 項目をリンクとして使用するプロジェクトでは、ファイルをディスク上の任意の場所に格納し、そのままビルドに含めることができます。 ほかのプロジェクトのファイルにリンクしている項目を追加することもできます。
プロジェクトの外部で作成されたファイルへのリンクを使用すると、プロジェクト間でファイルを共有できるため、ファイルに対する変更を自動的に取り込むことができます。ファイルが変更されるたびにコピーを更新する必要はありません。 ただし、ほかのユーザーに属するファイルなどへのリンクを使用する場合には、ファイルが削除されてしまう可能性があるので注意が必要です。 リンクを通じてファイルを共有しないようにするには、ファイルのコピーを作成し、そのコピーをプロジェクトに追加します。 この場合、プロジェクト内の項目はリンクのままでも、リンク先は元のファイルではなく作成したコピーになります。
ファイルを管理するプロジェクト
Web プロジェクトなど、一部のプロジェクトでは、すべてのファイルが同じ物理ディレクトリ内にあることが必要です。 このディレクトリは、プロジェクト ディレクトリと呼ばれます。プロジェクト ディレクトリには、ソリューション エクスプローラーでプロジェクト内に表示される各項目に対応する物理ファイルがあります。 この種類の関連付けでは、ディレクトリ構造とプロジェクト ファイルの両方で、プロジェクトで使用できるファイルやプロジェクトによって管理されているファイルを識別できます。 また、このようなプロジェクトでは、すべての項目がビルドで使用されます。
ファイルとリンクの両方を管理するプロジェクト
Visual Basic や Visual C# などの一部のプロジェクトでは、両方の関連付けを組み合わせて使用してファイルを管理します。 ソリューション エクスプローラーのプロジェクトのフォルダーに表示されるいくつかの項目は、ファイルへのリンクを表します。 その他の項目はファイル自体として管理されます。 このようなプロジェクトでは、通常、リンクを表す項目のアイコンに小さな矢印が表示されます。
両方の関連付けを使用できるプロジェクトでは、項目のファイルを任意の場所に保存できます。 プロジェクト ファイルによって、プロジェクトに含まれるファイル、ソース コード管理の情報、およびその他のメタデータが追跡されます。