次の方法で共有


プロジェクト タイプの登録

新しいプロジェクト タイプを作成する場合は、Visual Studio でプロジェクト タイプを認識して使用できるようにするレジストリ エントリを作成する必要があります。 通常、これらのレジストリ エントリを作成するには、レジストリ スクリプト (.rgs) ファイルを使用します。

次の例では、レジストリのステートメントによって、該当する場合は既定のパスとデータが指定され、それに続いて各ステートメントのレジストリ スクリプトのエントリを含むテーブルが指定されます。 これらのテーブルには、ステートメントに関するスクリプト エントリと追加情報が記載されます。

Note

次のレジストリ情報は、プロジェクト タイプを登録するために記述するレジストリ スクリプトのエントリの種類と目的の例となるように意図されています。 実際のエントリとその使用は、プロジェクト タイプの特定の要件によって異なる場合があります。 開発しているプロジェクト タイプによく似たものを見つけるために使用可能なサンプルを調べ、そのサンプルのレジストリ スクリプトを確認する必要があります。

次に HKEY_CLASSES_ROOT の例を示します。

例 1

\.figp
   @="FigPrjFile"
   "Content Type"="text/plain"
\.figp\ShellNew
   "NullFile"=""
\FigPrjFile
   @="Figure Project File"
\DefaultIcon
   @="<Visual Studio SDK installation path>\\9.0VSIntegration\\SomeFolder\\FigPkgs\\FigPrj\\Debug\\FigPrj.dll,-206"
\shell\open
   @="&Open in Visual Studio"
\shell\open\command
   @="devenv.exe \"%1\""
名前 Type データ 説明
@ REG_SZ FigPrjFile 拡張子が .figp であるプロジェクト タイプ ファイルの名前と説明。
Content Type REG_SZ Text/plain プロジェクト ファイルのコンテンツ タイプ。
NullFile REG_SZ Null
@ REG_SZ %MODULE%,-206 この種類のプロジェクトに使用される既定のアイコン。 %MODULE% ステートメントは、プロジェクト タイプ DLL の既定の場所に対してレジストリ内で完了されます。
@ REG_SZ &Open in Visual Studio このプロジェクト タイプが開かれる既定のアプリケーション。
@ REG_SZ devenv.exe "%1" この種類のプロジェクトが開かれたときに実行される既定のコマンド。

次の例は HKEY_LOCAL_MACHINE からのものであり、レジストリ内でキー [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\99.0Exp\Packages] の下にあります。

例 2

\{ACEF4EB2-57CF-11D2-96F4-000000000000} (The CLSID for the VSPackage)
   @="FigPrj Project Package"
   "InprocServer32"="9.0<Visual Studio SDK installation path>\\VSIntegration\\Archive\\FigPkgs\\FigPrj\\                      Debug\\FigPrj.dll"
   "CompanyName"="Microsoft"
   "ProductName"="Figure Project Sample"
   "ProductVersion"="9.0"
   "MinEdition"="professional"
   "ID"=dword:00000001
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\SatelliteDLL
   "DllName"="FigPrjUI.dll"
   "Path"="9.0<Visual Studio SDK installation path>\\VSIntegration\\Archive\\FigPkgs\\FigPrj\\Debug\\"
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\Automation
   "FigProjects"=""
\{ACEF4EB2-57CF-11D2-96F4-000000000000}\AutomationEvents
   "FigProjectsEvents"="Returns the FigProjectsEvents Object"
   "FigProjectItemsEvents"="Returns the FigProjectItemsEvents Object"
名前 Type データ 説明
@ (既定値) REG_SZ FigPrj Project VSPackage この登録された VSPackage のローカライズ可能な名前 (プロジェクト タイプ)。
InprocServer32 REG_SZ %MODULE% プロジェクト タイプ DLL のパス。 IDE ではこの DLL を読み込み、VSPackage CLSID を DllGetClassObject に渡し、IClassFactory を取得して、IVsPackage オブジェクトを構築します。
CompanyName REG_SZ Microsoft プロジェクト タイプを開発した会社の名前。
ProductName REG_SZ Figure Project Sample プロジェクト タイプの名前。
ProductVersion REG_SZ 9.0 プロジェクト タイプ リリースのバージョン番号。
MinEdition REG_SZ professional 登録されている VSPackage のエディション。
ID REG_DWORD %IDS_PACKAGE_LOAD_KEY% プロジェクト VSPackage のパッケージ読み込みキー。 このキーは、環境が起動してからプロジェクトが読み込まれるときに検証されます。
DllName REG_SZ %RESOURCE_DLL% プロジェクト タイプのローカライズされたリソースを含むサテライト DLL のファイル名。
Path REG_SZ %RESOURCE_PATH% サテライト DLL のパス。
FigProjectsEvents REG_SZ 値についてはステートメントを参照してください。 このオートメーション イベントに対して返されるテキスト文字列を決定します。
FigProjectItemsEvents REG_SZ 値についてはステートメントを参照してください。 このオートメーション イベントに対して返されるテキスト文字列を決定します。

次の例はすべて、レジストリ内でキー [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects] の下にあります。

例 3

\{C061DB26-5833-11D2-96F5-000000000000} (The CLSID for projects of this type)
   @="FigPrj Project"
   "DisplayName"="#2"
   "Package"="{ACEF4EB2-57CF-11D2-96F4-000000000000}"
   "ProjectTemplatesDir"="C:\\Program Files\\VSIP 9.0\\EnvSDK\\FigPkgs\\                           FigPrj\\FigPrjProjects"
   "ItemTemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\                           FigPrjProjectItems"
   "DisplayProjectFileExtensions"="#3"
   "PossibleProjectExtensions"="figp"
   "DefaultProjectExtension"=".figp"
\{C061DB26-5833-11D2-96F5-000000000000}\Filters\1       (Folder 1 contains settings for Open Files filters.)
   @="#4"
   "CommonOpenFilesFilter"=dword:00000000
   "CommonFindFilesFilter"=dword:00000000
   "NotAddExistingItemFilter"=dword:00000000
   "FindInFilesFilter"=dword:00000000
   "NotOpenFileFilter"=dword:00000000
   "SortPriority"=dword:000003e8
\{C061DB26-5833-11D2-96F5-000000000000}\Filters\2
      (Folder 2 contains settings for Find in Files filters.)
   @="#5"
   "CommonOpenFilesFilter"=dword:00000000
   "CommonFindFilesFilter"=dword:00000000
   "NotAddExistingItemFilter"=dword:00000001
   "FindInFilesFilter"=dword:00000001
   "NotOpenFileFilter"=dword:00000000
   "SortPriority"=dword:000003e8
\{C061DB26-5833-11D2-96F5-000000000000}\AddItemTemplates\TemplateDirs\ {ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (Second GUID indicates the registered project type for the Add Items templates.)
   @="#6"
   "TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\                    FigPrjProjectItems"
   "SortPriority"=dword:00000064
名前 Type データ 説明
@ REG_SZ FigPrj Project この種類のプロジェクトの既定の名前。
DisplayName REG_SZ #%IDS_PROJECT_TYPE% パッケージに登録されているサテライト DLL から取得する名前のリソース ID。
Package REG_SZ %CLSID_Package% パッケージに登録されている VSPackage のクラス ID。
ProjectTemplatesDir REG_SZ %TEMPLATE_PATH%\FigPrjProjects プロジェクト テンプレート ファイルの既定のパス。 これらのファイルは、[新しいプロジェクト] テンプレートによって表示されます。
ItemTemplatesDir REG_SZ %TEMPLATE_PATH% \FigPrjProjectItems プロジェクト項目テンプレート ファイルの既定のパス。 これらのファイルは、[新しい項目の追加] テンプレートによって表示されます。
DisplayProjectFileExtensions REG_SZ #%IDS_DISPLAY_PROJ_FILE_EXT% IDE で [開く] ダイアログ ボックスを実装できるようにします。
PossibleProjectExtensions REG_SZ figp 開いているプロジェクトがこのプロジェクト タイプ (プロジェクト ファクトリ) で処理されるかどうかを判断するために IDE で使用されます。 複数のエントリは、セミコロンで区切られたリストの形式で指定します。 たとえば、"vdproj;vdp" のようになります。
DefaultProjectExtension REG_SZ .figp [名前を付けて保存] 操作の既定のファイル名拡張子として IDE で使用されます。
Filter Settings REG_DWORD さまざま。表に続くステートメントとコメントを参照してください。 これらの設定は、UI ダイアログ ボックスでファイルを表示するためのさまざまなフィルターを設定するために使用されます。
@ REG_SZ #%IDS_ADDITEM_TEMPLATES_ENTRY% 項目の追加テンプレートのリソース ID。
TemplatesDir REG_SZ %TEMPLATE_PATH%\FigPrjProjectItems [新しい項目の追加] テンプレートのダイアログ ボックスに表示されるプロジェクト項目のパス。
SortPriority REG_DWORD 100 (vcprx64) [新しい項目の追加] ダイアログ ボックスに表示されるファイルのツリー ノード内の並べ替え順序を決定します。

次の表は、前のコード セグメントで使用できるフィルター オプションを示しています。

フィルター オプション 説明
CommonFindFilesFilter フィルターが [フォルダーを指定して検索] ダイアログ ボックスの共通フィルターの 1 つであることを示します。 共通フィルターは、フィルター一覧で、共通としてマークが付けられていないフィルターの前に一覧表示されます。
CommonOpenFilesFilter フィルターが [ファイルを開く] ダイアログ ボックスの共通フィルターの 1 つであることを示します。 共通フィルターは、フィルター一覧で、共通としてマークが付けられていないフィルターの前に一覧表示されます。
FindInFilesFilter フィルターが [フォルダーを指定して検索] ダイアログ ボックスのフィルターの 1 つであり、共通フィルターの後に一覧表示されることを示します。
NotOpenFileFilter フィルターが [ファイルを開く] ダイアログ ボックスで使用されないことを示します。
NotAddExistingItemFilter フィルターが [既存項目の追加] ダイアログ ボックスで使用されないことを示します。

既定では、フィルターにこれらのフラグの 1 つ以上が設定されていない場合、このフィルターは、共通フィルターが一覧表示された後で、[既存項目の追加] ダイアログ ボックスと [ファイルを開く] ダイアログ ボックスで使用されます。 フィルターは、[フォルダーを指定して検索] ダイアログ ボックスでは使用されません。

次の例はすべて、レジストリ内でキー [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects] の下にあります。

例 4

{FE3BBBB6-72D5-11d2-9ACE-00C04F79A2A4} (The CLSID for Enterprise Projects)
\{FE3BBBB6-72D5-11d2-9ACE-00C04F79A2A4}\AddItemTemplates\TemplateDirs\ {ACEF4EB2-57CF-11D2-96F4-000000000000}\1 (CLSID for projects of this type)
   @="#7"
   "TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPrj\\FigPrjProjects"
   "SortPriority"=dword:00000029
   "NewProjectDialogOnly"=dword:00000000
名前 Type データ 説明
@ REG_SZ #%IDS_NEWPROJ_ TEMPLATES_ENTRY% 新しいプロジェクト テンプレートのリソース ID。
TemplatesDir REG_SZ %TEMPLATE_PATH%\FigPrjProjects 登録されているプロジェクト タイプのプロジェクトの既定のパス。
SortPriority REG_DWORD 41 (x29) [新しいプロジェクト ウィザード] ダイアログ ボックスに表示されるプロジェクトの並べ替え順序を設定します。
NewProjectDialogOnly REG_DWORD 0 0 は、この種類のプロジェクトが [新しいプロジェクト] ダイアログ ボックスにのみ表示されることを示します。

次の例はすべて、レジストリ内でキー [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects] の下にあります。

例 5

\{A2FE74E1-B743-11d0-AE1A-00A0C90FFFC3} (CLSID for Miscellaneous Files projects)
   @="Miscellaneous Files Project"
\AddItemTemplates\TemplateDirs\{ACEF4EB2-57CF-11D2-96F4-000000000000}\1
                                 (CLSID for Figures Project projects)
   @="#6"
   "TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\                    FigPrjProjectItems"
   "SortPriority"=dword:00000064
名前 Type データ 説明
@ REG_SZ なし 次のエントリが [その他のファイル] プロジェクト エントリ用であることを示す既定値。
@ REG_SZ #%IDS_ADDITEM_TEMPLATES_ENTRY% [新しい項目の追加] テンプレート ファイルのリソース ID 値。
TemplatesDir REG_SZ %TEMPLATE_PATH%\FigPrjProjectItems [新しい項目の追加] ダイアログ ボックスに表示される項目の既定のパス。
SortPriority REG_DWORD 100 (vcprx64) [新しい項目の追加] ダイアログ ボックスのツリー ノードに表示される並べ替え順序を設定します。

次の例は、レジストリ内でキー [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Menus] の下にあります。

例 6

"{ACEF4EB2-57CF-11D2-96F4-000000000000}"=",1000,1"

メニュー エントリにより、メニュー情報の取得に使用されたリソースが IDE で参照されます。 このデータがメニュー データベースにマージされると、レジストリの MenusMerged セクションに同じキーが追加されます。 MenusMerged セクションの下にあるものを直接、VSPackage で変更することはできません。 次の表のデータ フィールドには、3 つのコンマ区切りのフィールドがあります。 最初のフィールドは、メニュー リソース ファイルの完全パスを示します。

  • 最初のフィールドを省略した場合、メニュー リソースは VSPackage GUID で識別されるサテライト DLL から読み込まれます。

    2 番目のフィールドは、型 CTMENU のメニュー リソース ID を識別します。

  • リソース ID が指定されていて、ファイル パスが最初のパラメーターで指定されている場合、メニュー リソースは完全なファイル パスから読み込まれます。

  • リソース ID が指定されていても、ファイル パスが指定されていない場合、メニュー リソースはサテライト DLL から読み込まれます。

  • 完全なファイル パスが指定されていて、リソース ID が省略されている場合は、読み込まれるファイルは CTO ファイルである必要があります。

    最後のフィールドは、CTMENU リソースのバージョン番号を識別します。 バージョン番号を変更して、もう一度メニューをマージできます。

名前 Type データ 説明
%CLSID_Package% REG_SZ ,1000,1 メニュー情報を取得するリソース。

次の例はすべて、レジストリ内でキー [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\NewProjectTemplates] の下にあります。

\TemplateDirs\{ACEF4EB2-57CF-11D2-96F4-000000000000}\1                (CLSID for Figures Project projects)
   @="#7"
   "TemplatesDir"="<Visual Studio SDK installation path>\\VSIntegration\\Archive9.0\\FigPkgs\\FigPrj\\FigPrjProjects"
   "SortPriority"=dword:00000029
   "NewProjectDialogOnly"=dword:00000000
名前 Type データ 説明
@ REG_SZ #%IDS_NEWPROJ_TEMPLATES_ENTRY% [図プロジェクトの新しいプロジェクト] テンプレートのリソース ID 値。
TemplatesDir REG_SZ %TEMPLATE_PATH%\FigPrjProjects [新しいプロジェクト] ディレクトリの既定のパス。 このディレクトリ内の項目は、[新規プロジェクト ウィザード] ダイアログ ボックスに表示されます。
SortPriority REG_DWORD 41 (x29) [新しいプロジェクト] ダイアログ ボックスのツリー ノードにプロジェクトを表示する順序を設定します。
NewProjectDialogOnly REG_DWORD 0 0 は、この種類のプロジェクトが [新しいプロジェクト] ダイアログ ボックスにのみ表示されることを示します。

次の例は、レジストリ内でキー [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\InstalledProducts] の下にあります。

\FiguresProductSample
   "Package"="{ACEF4EB2-57CF-11D2-96F4-000000000000}"
   "UseInterface"=dword:00000001
名前 Type データ 説明
Package REG_SZ %CLSID_Package% 登録されている VSPackage のクラス ID。
UseInterface REG_DWORD 1 1 は、このプロジェクトとの対話に UI が使用されることを示します。 0 は、UI インターフェイスがないことを示します。

新しいプロジェクト タイプを制御する .vsz ファイルには、多くの場合 RELATIVE_PATH エントリが含まれています。 このパスは、次のセットアップ キーで、プロジェクト タイプの \ProductDir エントリの下で指定されたパスに対する相対パスです。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup

たとえば、エンタープライズ フレームワーク プロジェクト テンプレートでは、次のレジストリ エントリが追加されます。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup\EF\ProductDir = C:\Program Files\Microsoft Visual Studio\EnterpriseFrameworks\

つまり、.vsz ファイルに PROJECT_TYPE=EF エントリを含めると、環境では、前に指定した ProductDir ディレクトリにある .vsz ファイルが検索されます。