テンプレート ディレクトリの説明 (.Vsdir) ファイル
テンプレート ディレクトリ記述ファイル (.vsdir) は、プロジェクトに関連付けられているフォルダー、ウィザード .vsz ファイル、およびテンプレート ファイルを統合開発環境 (IDE: Integrated Development Environment) でダイアログ ボックスに表示できるようにするテキスト ファイルです。 内容には、ファイルまたはフォルダーごとに 1 つのレコードが含まれています。 通常は 1 つの .vsdir ファイルだけで複数のフォルダー、ウィザード、またはテンプレート ファイルが記述されますが、参照対象の場所にある .vsdir ファイルはすべてマージされます。
フォルダー (サブディレクトリ)、.vsdir ファイルで参照されるファイル、および .vsdir ファイル自体がすべて同じディレクトリに配置されます。 IDE でウィザードを実行するか、[新しいプロジェクト] ダイアログ ボックスまたは [新しい項目の追加] ダイアログ ボックスにフォルダーまたはファイルを表示すると、実行対象のファイルが含まれているディレクトリに .vsdir ファイルが存在するかどうかが調べられます。 .vsdir ファイルが見つかった場合、IDE はそれを読み取って、実行対象または表示対象のフォルダーまたはファイルのエントリが含まれているかどうかを判断します。 エントリが見つかった場合、IDE はその情報をウィザードの実行または内容の表示に使用します。
次のコード例は、<EnvSDK>\BscPrj\BscPrj\BscPrjProjectItems\Source_Files レジストリ キーの SourceFiles.vsdir ファイルのものです。
HeaderFile.h|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#125|130|#126|0|0|0|#127
SourceFile.cpp|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#122|110|#123|0|0|0|#124
この場合、1 つのファイルに 2 つのレコードが含まれています。 各レコードは改行 (キャリッジ リターン文字) で区切られています。 各行は異なるファイルの種類を表します。 各レコード内のフィールドは、パイプ (|) 文字で区切られています。 1 つのディレクトリに、異なるファイル名を持つ複数の .vsdir ファイルを含めることができます。また、ファイルの種類ごとに 1 つの .vsdir ファイルを使用することもできます。
フィールド
次の表に、各レコードに対して指定されるフィールドを示します。
フィールド | 説明 |
---|---|
相対パス名 (RelPathName) | フォルダー、テンプレート、または .vsz ファイルの名前 (HeaderFile.h や MyWizard.vsz など)。 このフィールドは、フォルダーを表す名前にすることもできます。 |
{clsidPackage} | VSPackage のサテライト ダイナミックリンク ライブラリ (DLL) リソースで、ローカライズされた文字列 (LocalizedName、Description、IconResourceId、SuggestedBaseName など) へのアクセスを可能にする VSPackage の GUID。 DLLPath が指定されていない場合は、IconResourceId が適用されます。 注: 前のフィールドの 1 つ以上がリソース識別子である場合を除き、このフィールドは省略可能です。 このフィールドは通常、テキストをローカライズしないサードパーティのウィザードに対応する .vsdir ファイルに対しては空白になります。 |
LocalizedName | テンプレート ファイルまたはウィザードのローカライズされた名前。 このフィールドには、文字列または "#ResID" 形式のリソース識別子を指定できます。 この名前は、[新しい項目の追加] ダイアログ ボックスに表示されます。 注: LocalizedName がリソース識別子の場合、{clsidPackage} は必須です。 |
SortPriority | このテンプレート ファイルまたはウィザードの相対的な優先順位を表す整数。 たとえば、この項目の値が 1 の場合、この項目は、値 1 を持つ他の項目の横に表示されます。その後に、値 2 以上のすべての項目が表示されます。 並べ替えの優先順位は、同じディレクトリ内の項目に対するものです。 同じディレクトリに複数の .vsdir ファイルがある可能性があります。 その場合、そのディレクトリ内にあるすべての .vsdir ファイルの項目がマージされます。 同じ優先順位の項目は、大文字小文字を区別しない表示名の辞書式順序で一覧表示されます。 _wcsicmp 関数は、項目の順序付けに使用されます。.vsdir ファイルに記述されていない項目には、.vsdir ファイルに記載されている最も高い優先順位番号よりも大きい優先順位番号が与えられます。 結果として、このような項目は、名前に関係なく、表示された一覧の末尾にあります。 |
説明 | テンプレート ファイルまたはウィザードのローカライズされた説明。 このフィールドには、文字列または "#ResID" 形式のリソース識別子を指定できます。 この文字列は、[新しいプロジェクト] または [新しい項目の追加] ダイアログ ボックスで項目が選択されたときに表示されます。 |
DLLPath または {clsidPackage} | テンプレート ファイルまたはウィザードのアイコンを読み込むために使用されます。 アイコンは、IconResourceId を使用して、.dll または .exe ファイルからリソースとして読み込まれます。 この .dll または .exe ファイルは、完全なパスを使用するか、VSPackage の GUID を使用して識別できます。 アイコンの読み込みには VSPackage の実装 DLL が使用されます (サテライト DLL ではなく)。 |
IconResourceId | 表示するアイコンを指定する、DLL 内または VSPackage 実装 DLL 内のリソース識別子。 |
Flags (__VSDIRFLAGS) | [新しい項目の追加] ダイアログ ボックスの [名前] フィールドと [場所] フィールドを無効または有効にするために使用されます。 Flags フィールドの値は、必要なビット フラグの組み合わせに相当する 10 進数です。 ユーザーが [新規] タブで項目を選択した場合に、[新しい項目の追加] ダイアログ ボックスが最初に表示されるときに [名前] フィールドと [場所] フィールドが表示されるかどうかは、プロジェクトによって決定されます。 項目では、.vsdir ファイルを介して、項目が選択されたときにフィールドを有効にするか無効にするかのみを制御できます。 |
SuggestedBaseName | ファイル、ウィザード、またはテンプレートの既定の名前を表します。 このフィールドには、文字列または "#ResID" 形式のリソース識別子を指定します。 IDE では、この値を使用して項目の既定の名前を指定します。 名前が一意になるように、この基本値に整数値が付加されます (たとえば、MyFile21.asp)。 前の一覧の Description、DLLPath、IconResourceId、Flags、および SuggestedBaseNumber は、テンプレート ファイルとウィザード ファイルにのみ適用されます。 これらのフィールドは、フォルダーには適用されません。 この事実は、<EnvSDK>\BscPrj\BscPrj\BscPrjProjectItems レジストリ キーの BscPrjProjectItems ファイルのコードに示されています。 このファイルには 3 つのレコード (フォルダーごとに 1 つ) が含まれており、各レコードに 4 つのフィールド RelPathName、{clsidPackage}、LocalizedName、および SortPriority があります。 General|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#110|100 Source_Files|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#111|110 Env|{E59935A1-6156-11d1-87A6-00A0C91E2A46}|#112|120 |
ウィザード ファイルを作成する場合は、次の問題についても考慮する必要があります。
意味のあるデータを持たない省略可能なフィールドには、プレースホルダーとして 0 (ゼロ) を格納する必要があります。
ローカライズされた名前が指定されていない場合、ウィザード ファイルでは相対パス名が使用されます。
DLLPath は、アイコンの場所に関して clsidPackage をオーバーライドします。
アイコンが定義されていない場合、IDE は、その拡張子を持つファイルの既定のアイコンで代用します。
SuggestedBaseName が指定されてない場合は、"Project" が使用されます。
.vsz ファイル、フォルダー、またはテンプレート ファイルを削除する場合は、関連付けられているレコードも .vsdir ファイルから削除する必要があります。