5

Czy mogę utworzyć rozszerzenie programu Visual Studio, które działa w tle, gdy tylko użytkownik otworzy IDE Visual Studio? Na przykład buduję rozszerzenie, które pobiera aktualny aktywny adres pliku w Visual Studio (z C#), ale chciałbym aby to rozszerzenie zawsze działało w tle bez konieczności aktywowania przez użytkownika kliknięciem przycisku lub naciśnięciem jakiegoś klawisza połączenie.Automatyczne uruchamianie kodu rozszerzenia w programie Visual Studio przy uruchomieniu

Czy to możliwe, a jeśli tak, jaki jest najlepszy sposób na zrobienie tego?

Każda pomoc będzie bardzo ceniona! Pozdrawiam, Erfan

+0

W zależności od tego, co próbujesz zrobić, możesz określić rozszerzenie, aby załadować określone typy plików. –

Odpowiedz

4

Od czasu, gdy oznaczyłeś swoje pytanie na visual-studio-2010, zakładam, że pracujesz nad "Dodatkiem" zamiast "Rozszerzeniami VSPackage".

W tym przypadku można użyć programu obsługi zdarzeń OnConnection.

Jeśli pracujesz nad rozszerzeniami VSPackage, możesz użyć atrybutu ProvideAutoLoad.

Po prostu wyszukaj te, znajdziesz wystarczającą informację. Oba sposoby są również opisane krótko: here under "How can I run my add-in code in a VSPackage?"

2

W przypadku VS 2010 i nowszych zalecanym rozszerzeniem jest pakiet (VS 2015 nie zezwala na dodatki).

Aby załadować pakiet po załadowaniu Visual Studio, zobacz HOWTO: Autoload a Visual Studio package.

Po załadowaniu pakiet może być zainteresowany w dwóch różnego rodzaju imprez Zmiana wyboru:

  • , aby otrzymywać powiadomienia, gdy wybór w Solution Explorer zmienia, uzyskać interfejs IVsMonitorSelection i nazywają AdviseSelectionEvents/UnadviseSelectionEvents i zapewnić klasę, która implementuje interfejs IVsSelectionEvents.
  • Aby otrzymywać powiadomienia o zmianie aktywnego okna (które może być oknem dokumentu lub oknem narzędzi), należy zastosować interfejs IVsWindowFrameNotify.
1

Dla rozszerzenia dodaj następujący atrybut do klasy Pakiet, to załaduje rozszerzenie, gdy rozwiązanie nie zostanie otwarte w visual studio. Testowałem to z VS 2015 i 2017.

[ProvideAutoLoad(UIContextGuids80.NoSolution)] 
Powiązane problemy