Sdílet prostřednictvím


Podrobnosti konfigurace správy zdrojového kódu

Abyste mohli implementovat správu zdrojového kódu, musíte správně nakonfigurovat systém projektu nebo editor, aby provedl následující akce:

  • Žádost o oprávnění k přechodu na změněný stav

  • Žádost o oprávnění k uložení souboru

  • Žádost o oprávnění k přidání, odebrání nebo přejmenování souborů v projektu

Žádost o oprávnění k přechodu na změněný stav

Projekt nebo editor musí požádat o oprávnění k přechodu na změněný (špinavý) stav voláním IVsQueryEditQuerySave2. Každý editor, který implementuje IsDocDataDirty , musí volat QueryEditFiles a přijímat schválení, aby před vrácením TrueIsDocDataDirtydo prostředí změnil dokument z prostředí . Projekt je v podstatě editorem souboru projektu a v důsledku toho má stejnou odpovědnost za implementaci sledování změněných stavů pro soubor projektu jako textový editor pro své soubory. Prostředí zpracovává změněný stav řešení, ale musíte zpracovat změněný stav jakéhokoli objektu, na který odkazuje řešení, ale neukládá se, jako je soubor projektu nebo jeho položky. Obecně platí, že pokud je váš projekt nebo editor zodpovědný za správu trvalosti položky, zodpovídá za implementaci sledování změněného stavu.

V reakci na IVsQueryEditQuerySave2::QueryEditFiles volání může prostředí provádět následující akce:

  • Zamítnout změnu volání, v takovém případě musí editor nebo projekt zůstat v nezměněném (čistém) stavu.

  • Označuje, že data dokumentu by se měla znovu načíst. V případě projektu prostředí znovu načte data projektu. Editor musí data z disku znovu načíst prostřednictvím své ReloadDocData implementace. V obou případech se kontext v projektu nebo editoru může při opětovném načtení dat změnit.

    Je to složitá a obtížná úloha zpětného přizpůsobení vhodných IVsQueryEditQuerySave2::QueryEditFiles volání do existujícího základu kódu. V důsledku toho by tato volání měla být integrována během vytváření projektu nebo editoru.

Žádost o oprávnění k uložení souboru

Než projekt nebo editor uloží soubor, musí volat QuerySaveFile nebo QuerySaveFiles. U projektových souborů jsou tato volání automaticky dokončena řešením, které ví, kdy uložit soubor projektu. Editory jsou zodpovědné za provádění těchto volání, pokud editor implementace IVsPersistDocData2 použití pomocné funkce SaveDocDataToFile. Pokud váš editor implementuje IVsPersistDocData2 tímto způsobem, volání IVsQueryEditQuerySave2::QuerySaveFileIVsQueryEditQuerySave2::QuerySaveFiles nebo je pro vás provedeno.

Poznámka:

Vždy proveďte tato volání předem – to znamená, že v době, kdy váš editor dokáže přijmout zrušení.

Žádost o oprávnění k přidání, odebrání nebo přejmenování souborů v projektu

Aby mohl projekt přidat, přejmenovat nebo odebrat soubor nebo adresář, musí volat příslušnou IVsTrackProjectDocuments2::OnQuery* metodu pro vyžádání oprávnění z prostředí. Pokud je uděleno oprávnění, musí projekt dokončit operaci a potom volat příslušnou IVsTrackProjectDocuments2::OnAfter* metodu, která oznámí prostředí, že je operace dokončena. Projekt musí volat metody IVsTrackProjectDocuments2 rozhraní pro všechny soubory (například speciální soubory) a nejen nadřazené soubory. Volání souborů jsou povinná, ale volání adresáře jsou volitelná. Pokud projekt obsahuje informace o adresáři, měl by volat příslušné IVsTrackProjectDocuments2 metody, ale pokud tyto informace neobsahuje, prostředí odvodí informace o adresáři.

Projekt by neměl volat metody IVsTrackProjectDocuments2 otevření nebo zavření projektu. Naslouchací procesy, které chtějí tyto informace při spuštění, můžou čekat na OnAfterOpenSolution událost a iterovat řešení, aby našli potřebné informace. Při vypnutí nejsou tyto informace potřeba. IVsTrackProjectDocuments2je poskytována z SVsTrackProjectDocuments

U každého přidání, přejmenování a odebrání akce existuje OnQuery* metoda a OnAfter* metoda. OnQuery* Voláním metody požádejte o oprávnění k přidání, přejmenování nebo odebrání souboru nebo adresáře. OnAfter* Volání metody po přidání, přejmenování nebo odebrání souboru nebo adresáře a stav projektu odráží nový stav.