Udostępnij za pośrednictwem


Szczegóły konfiguracji kontroli kodu źródłowego

Aby zaimplementować kontrolę źródła, należy prawidłowo skonfigurować system projektu lub edytor, aby wykonać następujące czynności:

  • Żądanie uprawnienia do przejścia do zmienionego stanu

  • Żądanie uprawnień do zapisania pliku

  • Żądanie uprawnień do dodawania, usuwania lub zmieniania nazw plików w projekcie

Żądanie uprawnienia do przejścia do zmienionego stanu

Projekt lub edytor musi zażądać uprawnienia do przejścia do zmienionego (zanieczyszczonego) stanu, wywołując polecenie IVsQueryEditQuerySave2. Każdy edytor, który implementujeIsDocDataDirty, musi wywołać QueryEditFiles i otrzymać zatwierdzenie, aby zmienić dokument ze środowiska przed zwróceniem True polecenia .IsDocDataDirty Projekt jest zasadniczo edytorem pliku projektu, a w rezultacie ma taką samą odpowiedzialność za zaimplementowanie śledzenia zmienionych stanów dla pliku projektu, jak edytor tekstów dla jego plików. Środowisko obsługuje zmieniony stan rozwiązania, ale należy obsłużyć zmieniony stan każdego obiektu, do którego odwołuje się rozwiązanie, ale nie przechowuje, jak plik projektu lub jego elementy. Ogólnie rzecz biorąc, jeśli projekt lub edytor jest odpowiedzialny za zarządzanie trwałością elementu, jest on odpowiedzialny za implementację śledzenia zmienionych stanów.

W odpowiedzi na wywołanie IVsQueryEditQuerySave2::QueryEditFiles środowisko może wykonać następujące czynności:

  • Odrzuć wywołanie zmiany, w tym przypadku edytor lub projekt musi pozostać w niezmienionym (czystym) stanie.

  • Wskaż, że dane dokumentu powinny zostać ponownie załadowane. W przypadku projektu środowisko ponownie załaduje dane dla projektu. Edytor musi ponownie załadować dane z dysku przez jego ReloadDocData implementację. W obu przypadkach kontekst w projekcie lub edytorze może ulec zmianie po ponownym załadowaniu danych.

    Jest to złożone i trudne zadanie modernizacji odpowiednich IVsQueryEditQuerySave2::QueryEditFiles wywołań do istniejącej bazy kodu. W związku z tym te wywołania powinny być zintegrowane podczas tworzenia projektu lub edytora.

Żądanie uprawnienia do zapisywania pliku

Zanim projekt lub edytor zapisze plik, musi on wywołać QuerySaveFile metodę lub QuerySaveFiles. W przypadku plików projektu te wywołania są automatycznie wykonywane przez rozwiązanie, które wie, kiedy zapisać plik projektu. Edytory są odpowiedzialne za wykonywanie tych wywołań, chyba że implementacja edytora IVsPersistDocData2 używa funkcji SaveDocDataToFilepomocnika . Jeśli edytor implementuje IVsPersistDocData2 w ten sposób, wywołanie metody IVsQueryEditQuerySave2::QuerySaveFile lub IVsQueryEditQuerySave2::QuerySaveFiles zostanie wykonane za Ciebie.

Uwaga

Zawsze należy wykonywać te wywołania z preemptively — czyli w czasie, gdy edytor może odebrać anulowanie.

Żądanie uprawnień do dodawania, usuwania lub zmieniania nazw plików w projekcie

Zanim projekt będzie mógł dodawać, zmieniać nazwy lub usuwać plik lub katalog, musi wywołać odpowiednią IVsTrackProjectDocuments2::OnQuery* metodę, aby zażądać uprawnień ze środowiska. Jeśli udzielono uprawnień, projekt musi ukończyć operację, a następnie wywołać odpowiednią IVsTrackProjectDocuments2::OnAfter* metodę, aby powiadomić środowisko o zakończeniu operacji. Projekt musi wywoływać metody interfejsu IVsTrackProjectDocuments2 dla wszystkich plików (na przykład plików specjalnych), a nie tylko plików nadrzędnych. Wywołania plików są obowiązkowe, ale wywołania katalogów są opcjonalne. Jeśli projekt zawiera informacje o katalogu, należy wywołać odpowiednie IVsTrackProjectDocuments2 metody, ale jeśli nie ma tych informacji, środowisko wywnioskuje informacje o katalogu.

Projekt nie powinien wywoływać metod otwierania lub zamykania IVsTrackProjectDocuments2 projektu. Odbiorniki, które chcą uzyskać te informacje podczas uruchamiania, mogą czekać na OnAfterOpenSolution zdarzenie i iterować przez rozwiązanie w celu znalezienia potrzebnych informacji. Po zamknięciu te informacje nie są potrzebne. IVsTrackProjectDocuments2 element jest dostarczany z elementu SVsTrackProjectDocuments.

Dla każdej akcji dodawania, zmieniania nazwy i usuwania istnieje OnQuery* metoda i OnAfter* metoda. Wywołaj metodę OnQuery* , aby poprosić o uprawnienie do dodawania, zmieniania nazwy lub usuwania pliku lub katalogu. Wywołaj metodę OnAfter* po dodaniu pliku lub katalogu, zmianie nazwy lub usunięciu, a stan projektu odzwierciedla nowy stan.