Udostępnij za pośrednictwem


Określanie, który edytor otwiera plik w projekcie

Gdy użytkownik otworzy plik w projekcie, środowisko przechodzi przez proces sondowania, ostatecznie otwierając odpowiedni edytor lub projektant dla tego pliku. Początkowa procedura stosowana przez środowisko jest taka sama zarówno w przypadku standardowych, jak i niestandardowych edytorów. Środowisko używa różnych kryteriów podczas sondowania, którego edytora używa do otwierania pliku, a pakiet VSPackage musi koordynować środowisko podczas tego procesu.

Na przykład gdy użytkownik wybierze polecenie Otwórz z menu Plik , a następnie wybierze plik nazwa_pliku.rtf (lub dowolny inny plik z rozszerzeniem rtf ), środowisko wywołuje implementację IsDocumentInProject dla każdego projektu, ostatecznie przechodząc przez wszystkie wystąpienia projektu w rozwiązaniu. Projekty zwracają zestaw flag identyfikujących oświadczenia w dokumencie według priorytetu. Przy użyciu najwyższego priorytetu środowisko wywołuje odpowiednią OpenItem metodę. Aby uzyskać więcej informacji na temat procesu sondowania, zobacz Dodawanie szablonów projektów i elementów projektu.

Projekt Różne pliki twierdzi, że wszystkie pliki, które nie są przejmowane przez inne projekty. Dzięki temu edytory niestandardowe mogą otwierać dokumenty przed otwarciem standardowych edytorów. Jeśli projekt Różne pliki twierdzi, że plik jest zgłaszany, środowisko wywołuje OpenStandardEditor metodę w celu otwarcia pliku za pomocą standardowego edytora. Środowisko sprawdza wewnętrzną listę zarejestrowanych edytorów dla tego, który obsługuje pliki rtf . Ta lista znajduje się w rejestrze pod następującym kluczem:

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version>\Editors\<editor factory guid>\Extensions

Środowisko sprawdza również identyfikatory klas w kluczu HKEY_CLASSES_ROOT\CLSID dla wszystkich obiektów, które mają podklucz DocObject. Jeśli znajdziesz tam rozszerzenie pliku, osadzona wersja aplikacji, taka jak Microsoft Word, zostanie utworzona w miejscu w programie Visual Studio. Te obiekty dokumentu muszą być plikami złożonymi, które implementują IPersistStorage interfejs, lub obiekt musi implementować IPersistFileFormat interfejs.

Jeśli w rejestrze nie ma fabryki edytora plików rtf, środowisko wyszukuje w kluczu HKEY_CLASSES_ROOT\.rtf i otwiera edytor określony w nim. Jeśli rozszerzenie pliku nie zostanie znalezione w HKEY_CLASSES_ROOT, środowisko używa podstawowego edytora tekstów programu Visual Studio do otwierania pliku, jeśli jest to plik tekstowy.

Jeśli podstawowy edytor tekstów ulegnie awarii, co występuje, jeśli plik nie jest plikiem tekstowym, środowisko używa jego edytora binarnego dla pliku.

Jeśli środowisko znajdzie edytor rozszerzenia rtf w swoim rejestrze, ładuje pakiet VSPackage, który implementuje tę fabrykę edytora. Środowisko wywołuje metodę SetSite w nowym programie VSPackage. Pakiet VSPackage wywołuje QueryService SID_SVsRegistorEditormetodę RegisterEditor , używając metody do zarejestrowania fabryki edytora w środowisku.

Środowisko ponownie wyszukuje wewnętrzną listę zarejestrowanych edytorów, aby znaleźć nowo zarejestrowaną fabrykę edytora dla plików rtf . Środowisko wywołuje implementację CreateEditorInstance metody, przekazując nazwę pliku i typ widoku do utworzenia.