Rejestrowanie typu projektu
Podczas tworzenia nowego typu projektu należy utworzyć wpisy rejestru, które umożliwiają programowi Visual Studio rozpoznawanie i pracę z typem projektu. Zazwyczaj te wpisy rejestru są tworzone przy użyciu pliku skryptu rejestru (rgs).
W poniższym przykładzie instrukcje z rejestru zawierają domyślne ścieżki i dane, jeśli ma to zastosowanie, a następnie tabelę zawierającą wpisy ze skryptu rejestru dla każdej instrukcji. Tabele zawierają wpisy skryptu i dodatkowe informacje o instrukcjach.
Uwaga
Poniższe informacje rejestru mają być przykładem typu i celów wpisów w skryptach rejestru, które będą zapisywane w celu zarejestrowania typu projektu. Rzeczywiste wpisy i ich zastosowania mogą się różnić w zależności od konkretnych wymagań typu projektu. Przejrzyj dostępne przykłady, aby znaleźć ten, który dokładnie przypomina typ opracowywanego projektu, a następnie przejrzyj skrypt rejestru dla tego przykładu.
Poniższe przykłady pochodzą z HKEY_CLASSES_ROOT.
Przykład 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\""
Nazwisko | Typ | Dane | opis |
---|---|---|---|
@ |
REG_SZ | FigPrjFile |
Nazwa i opis plików typu projektu, które mają rozszerzenie .figp. |
Content Type |
REG_SZ | Text/plain |
Typ zawartości dla plików projektu. |
NullFile |
REG_SZ | Null |
|
@ |
REG_SZ | %MODULE%,-206 |
Domyślna ikona używana dla projektu tego typu. Instrukcja %MODULE% jest zakończona w rejestrze do domyślnej lokalizacji biblioteki DLL typu projektu. |
@ |
REG_SZ | &Open in Visual Studio |
Domyślna aplikacja, w której ten typ projektu zostanie otwarty. |
@ |
REG_SZ | devenv.exe "%1" |
Domyślne polecenie, które będzie uruchamiane po otwarciu projektu tego typu. |
Poniższe przykłady pochodzą z HKEY_LOCAL_MACHINE i znajdują się w rejestrze pod kluczem [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\99.0Exp\Packages].
Przykład 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"
Nazwisko | Typ | Dane | opis |
---|---|---|---|
@ (Ustawienie domyślne) |
REG_SZ | FigPrj Project VSPackage |
Lokalizowalna nazwa tego zarejestrowanego pakietu VSPackage (typ projektu). |
InprocServer32 |
REG_SZ | %MODULE% |
Ścieżka biblioteki DLL typu projektu. Środowisko IDE ładuje tę bibliotekę DLL i przekazuje identyfikator CLSID pakietu VSPackage w celu DllGetClassObject utworzenia IClassFactory IVsPackage obiektu. |
CompanyName |
REG_SZ | Microsoft |
Nazwa firmy, która opracowała typ projektu. |
ProductName |
REG_SZ | Figure Project Sample |
Nazwa typu projektu. |
ProductVersion |
REG_SZ | 9.0 |
Numer wersji typu projektu. |
MinEdition |
REG_SZ | professional |
Edycja zarejestrowanego pakietu VSPackage. |
ID |
REG_DWORD | %IDS_PACKAGE_LOAD_KEY% |
Klucz ładowania pakietu dla pakietu VSPackage projektu. Klucz jest weryfikowany po załadowaniu projektu po uruchomieniu środowiska. |
DllName |
REG_SZ | %RESOURCE_DLL% |
Nazwa pliku satelitarnej biblioteki DLL zawierającej zlokalizowane zasoby dla typu projektu. |
Path |
REG_SZ | %RESOURCE_PATH% |
Ścieżka satelitarnej biblioteki DLL. |
FigProjectsEvents |
REG_SZ | Zobacz instrukcję , aby uzyskać wartość. | Określa ciąg tekstowy zwracany dla tego zdarzenia automatyzacji. |
FigProjectItemsEvents |
REG_SZ | Zobacz instrukcję , aby uzyskać wartość. | Określa ciąg tekstowy zwracany dla tego zdarzenia automatyzacji. |
Wszystkie poniższe przykłady znajdują się w rejestrze pod kluczem [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects].
Przykład 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
Nazwisko | Typ | Dane | opis |
---|---|---|---|
@ |
REG_SZ | FigPrj Project |
Domyślna nazwa projektów tego typu. |
DisplayName |
REG_SZ | #%IDS_PROJECT_TYPE% |
Identyfikator zasobu nazwy do pobrania z satelitarnej biblioteki DLL zarejestrowanej w obszarze Pakiety. |
Package |
REG_SZ | %CLSID_Package% |
Identyfikator klasy pakietu VSPackage zarejestrowanego w obszarze Pakiety. |
ProjectTemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
Domyślna ścieżka plików szablonu projektu. Są to pliki wyświetlane przez szablon Nowy projekt. |
ItemTemplatesDir |
REG_SZ | %TEMPLATE_PATH% \FigPrjProjectItems |
Domyślna ścieżka plików szablonu elementu projektu. Są to pliki wyświetlane przez szablon Dodaj nowy element. |
DisplayProjectFileExtensions |
REG_SZ | #%IDS_DISPLAY_PROJ_FILE_EXT% |
Umożliwia środowisku IDE zaimplementowanie okna dialogowego Otwieranie . |
PossibleProjectExtensions |
REG_SZ | figp |
Używany przez środowisko IDE do określenia, czy otwarty projekt jest obsługiwany przez ten typ projektu (fabryka projektów). Format dla więcej niż jednego wpisu to rozdzielana średnikami lista. Na przykład "vdproj; vdp". |
DefaultProjectExtension |
REG_SZ | .figp |
Używany przez środowisko IDE jako domyślne rozszerzenie nazwy pliku dla operacji Zapisz jako. |
Filter Settings |
REG_DWORD | Różne, zobacz instrukcje i komentarze w poniższej tabeli. | Te ustawienia służą do ustawiania różnych filtrów do wyświetlania plików w oknach dialogowych interfejsu użytkownika. |
@ |
REG_SZ | #%IDS_ADDITEM_TEMPLATES_ENTRY% |
Identyfikator zasobu dla pozycji Dodaj szablony elementów. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjectItems |
Ścieżka elementów projektu wyświetlanych w oknie dialogowym dla szablonu Dodaj nowy element . |
SortPriority |
REG_DWORD | 100 (vcprx64) |
Określa kolejność sortowania w węźle drzewa plików wyświetlanych w oknie dialogowym Dodawanie nowego elementu . |
W poniższej tabeli przedstawiono opcje Filtry dostępne w poprzednim segmencie kodu.
Opcja filtru | opis |
---|---|
CommonFindFilesFilter |
Wskazuje, że filtr jest jednym z typowych filtrów w oknie dialogowym Znajdowanie w plikach . Typowe filtry są wyświetlane na liście filtrów, zanim filtry nie są oznaczone jako typowe. |
CommonOpenFilesFilter |
Wskazuje, że filtr jest jednym z typowych filtrów w oknie dialogowym Otwieranie pliku . Typowe filtry są wyświetlane na liście filtrów, zanim filtry nie są oznaczone jako typowe. |
FindInFilesFilter |
Wskazuje, że filtr będzie jednym z filtrów w oknie dialogowym Znajdowanie w plikach i zostanie wyświetlony po typowych filtrach. |
NotOpenFileFilter |
Wskazuje, że filtr nie będzie używany w oknie dialogowym Otwieranie pliku . |
NotAddExistingItemFilter |
Wskazuje, że filtr nie będzie używany w oknie dialogowym Dodawanie istniejącego elementu . |
Domyślnie jeśli filtr nie ma co najmniej jednej z tych flag, filtr jest używany w oknie dialogowym Dodawanie istniejącego elementu i oknie dialogowym Otwieranie pliku po wyświetleniu typowych filtrów. Filtr nie jest używany w oknie dialogowym Znajdowanie w plikach .
Wszystkie poniższe przykłady znajdują się w rejestrze pod kluczem [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects].
Przykład 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
Nazwisko | Typ | Dane | opis |
---|---|---|---|
@ |
REG_SZ | #%IDS_NEWPROJ_ TEMPLATES_ENTRY% |
Identyfikator zasobu dla nowych szablonów projektów. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
Domyślna ścieżka dla projektów zarejestrowanego typu projektu. |
SortPriority |
REG_DWORD | 41 (x29) |
Ustawia kolejność sortowania projektów wyświetlanych w oknie dialogowym Kreator nowych projektów. |
NewProjectDialogOnly |
REG_DWORD | 0 |
0 wskazuje, że projekty tego typu są wyświetlane tylko w oknie dialogowym Nowy projekt. |
Wszystkie poniższe przykłady znajdują się w rejestrze pod kluczem [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Projects].
Przykład 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
Nazwisko | Typ | Dane | opis |
---|---|---|---|
@ |
REG_SZ | Brak | Wartość domyślna wskazująca, że następujące wpisy dotyczą wpisów projektów Różne pliki. |
@ |
REG_SZ | #%IDS_ADDITEM_TEMPLATES_ENTRY% |
Wartość identyfikatora zasobu dla plików szablonu Dodaj nowe elementy. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjectItems |
Domyślna ścieżka elementów, które będą wyświetlane w oknie dialogowym Dodawanie nowego elementu . |
SortPriority |
REG_DWORD | 100 (vcprx64) |
Ustanawia kolejność sortowania dla wyświetlania w węźle drzewa okna dialogowego Dodawanie nowego elementu . |
Poniższy przykład znajduje się w rejestrze pod kluczem [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Menus].
Przykład 6
"{ACEF4EB2-57CF-11D2-96F4-000000000000}"=",1000,1"
Wpis menu wskazuje środowisko IDE do zasobu używanego do pobierania informacji o menu. Po scaleniu tych danych z bazą danych menu ten sam klucz zostanie dodany w sekcji MenusMerged rejestru. Pakiet VSPackage nie powinien modyfikować żadnych elementów w sekcji MenusMerged bezpośrednio. W polu Dane w poniższej tabeli znajdują się trzy pola rozdzielane przecinkami. Pierwsze pole identyfikuje pełną ścieżkę pliku zasobu menu:
Jeśli pierwsze pole zostanie pominięte, zasób menu zostanie załadowany z biblioteki DLL satelitarnej zidentyfikowanej przez identyfikator GUID pakietu VSPackage.
Drugie pole identyfikuje identyfikator zasobu menu typu CTMENU:
Jeśli określono identyfikator zasobu, a ścieżka pliku jest dostarczana przez pierwszy parametr, zasób menu jest ładowany z pełnej ścieżki pliku.
Jeśli podano identyfikator zasobu, ale ścieżka pliku nie jest, zasób menu jest ładowany z satelitarnej biblioteki DLL.
Jeśli zostanie podana pełna ścieżka pliku i pominięty identyfikator zasobu, oczekuje się, że plik do załadowania będzie plikiem CTO.
Ostatnie pole identyfikuje numer wersji zasobu CTMENU. Możesz ponownie scalić menu, zmieniając numer wersji.
Nazwisko | Typ | Dane | opis |
---|---|---|---|
%CLSID_Package% | REG_SZ | ,1000,1 |
Zasób umożliwiający pobranie informacji o menu. |
Wszystkie poniższe przykłady znajdują się w rejestrze pod kluczem [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
Nazwisko | Typ | Dane | opis |
---|---|---|---|
@ |
REG_SZ | #%IDS_NEWPROJ_TEMPLATES_ENTRY% |
Wartość identyfikatora zasobu dla szablonów projektu Project New Project. |
TemplatesDir |
REG_SZ | %TEMPLATE_PATH%\FigPrjProjects |
Domyślna ścieżka katalogu New Projects. Elementy w tym katalogu będą wyświetlane w oknie dialogowym Kreator nowego projektu. |
SortPriority |
REG_DWORD | 41 (x29) |
Określa kolejność wyświetlania projektów w węźle drzewa okna dialogowego Nowy projekt . |
NewProjectDialogOnly |
REG_DWORD | 0 |
0 wskazuje, że projekty tego typu są wyświetlane tylko w oknie dialogowym Nowy projekt . |
Poniższy przykład znajduje się w rejestrze pod kluczem [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0Exp\InstalledProducts].
\FiguresProductSample
"Package"="{ACEF4EB2-57CF-11D2-96F4-000000000000}"
"UseInterface"=dword:00000001
Nazwisko | Typ | Dane | opis |
---|---|---|---|
Package |
REG_SZ | %CLSID_Package% |
Identyfikator klasy zarejestrowanego pakietu VSPackage. |
UseInterface |
REG_DWORD | 1 |
1 wskazuje, że interfejs użytkownika będzie używany do interakcji z tym projektem. 0 wskazuje, że nie ma interfejsu użytkownika. |
Pliki vsz kontrolujące nowe typy projektów często zawierają wpis RELATIVE_PATH. Ta ścieżka jest względna do ścieżki określonej w pozycji \ProductDir typu projektu w następującym kluczu instalacji:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup
Na przykład szablony projektów Enterprise Frameworks dodają następujące wpisy rejestru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0Exp\Setup\EF\ProductDir = C:\Program Files\Microsoft Visual Studio\EnterpriseFrameworks\
Oznacza to, że jeśli dołączysz wpis PROJECT_TYPE=EF w pliku vsz, środowisko znajdzie pliki vsz w katalogu ProductDir określonym wcześniej.