2017-09-24 74 views
5

Moje rozszerzenie Visual Studio odpowiada na otwarcie rozwiązania poprzez IVsSolutionEvents.OnAfterOpenSolution().W rozszerzeniu Visual Studio, jak odpowiedzieć na "Otwórz folder", a także "Otwórz rozwiązanie"?

Visual Studio 2017 wprowadziło "Open Folder" jako alternatywę dla "Open Solution", ale kiedy otworzysz folder, IVsSolutionEvents.OnAfterOpenSolution() nie uruchamia się. (Żadnych innych zdarzeń w IVsSolutionEvents, ani żadnego z wydarzeń w IVsSolutionLoadEvents.)

W jaki sposób moje rozszerzenie może wiedzieć, kiedy Folder, w przeciwieństwie do Rozwiązania, zostanie otwarty?

+0

Szukasz IVsSolutionEvents7 :: OnAfterOpenFolder? https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.shell.interop.ivssolutionevents7?view=visualstudiosdk-2017 –

+0

@SimonMourier: To wygląda idealnie, ale kiedy go zaimplementuję i przekażę swoje wdrożenie obiekt do 'IVsSolution.AdviseSolutionEvents()', żadne z zdarzeń 'IVsSolutionEvents7' nie zostanie wywołane. Obiekt implementuje również "IVsSolutionEvents", a zdarzenia te są uruchamiane. Jakieś pomysły...? – RichieHindle

+0

Nie, myślę, że to naprawdę jedyny sposób. Niektóre VS dll implementują ten interfejs właśnie tak (na przykład Microsoft.VisualStudio.Shell.UI.Internal, klasa Microsoft.VisualStudio.PlatformUI.StartPageToolWindowPane). Możesz spróbować tymczasowo zaimplementować program ICustomQueryInterface, aby sprawdzić, czy nawet wymaga tego interfejsu. –

Odpowiedz

6

Musisz użyć IVsSolutionEvents7.OnAfterOpenFolder Method, który został dodany do 2017.

powiadamia słuchania klientów, że folder został otwarty Visual Studio.

public void OnAfterOpenFolder (string folderPath); 

Ponieważ jest natywny interfejs COM, trzeba również upewnić się, że klasa wykonawczych jest COM widoczne (za pomocą atrybutu ComVisible że można ustawić na zespole, na klasy, w klasie bazowej itp.).

+0

Cudownie - wielkie dzięki! Mam pytanie uzupełniające tutaj: https://stackoverflow.com/questions/46432488/, na którym bardzo cenię twoje dane wejściowe. – RichieHindle

+0

@SimonMourier Czy wiesz, jak śledzić przełączanie "Widok rozwiązania" i "Widok katalogu" w Eksploratorze rozwiązań? Czy może istnieć interfejs z odpowiednimi metodami? –

+0

@Nightwalker - powinieneś zadać kolejne pytanie –