Migracja starej wtyczki do nowej wersji Visual Studio 2017


Tworząc dodatek do Visual Studio zapewne wiele osób będzie uczyło się poprzez analizę kodu istniejących już dodatków (chociażby ze źródeł na GitHubie od MS). Okazuje się jednak, że projekty pluginów stworzonych pod stare IDE zupełnie nie chcą kompilować się w nowej odsłonie Visual Studio. Jesteśmy zmuszeni do ręcznej migracji takich dodatków. Oto poradnik jak tego dokonać.

Automatyczna aktualizacji (standardowa)

Otwierając projekt, który został stworzony w starym IDE, w nowym Visual Studio 2017 dostaniemy standardowy komunikat o automatycznej aktualizacji.

desk

Nie mamy wyjścia i godzimy się na to. Po chwili projekt jest już gotowy na działanie w nowej wersji IDE. Niestety próba builda zakończy się niepowodzeniem.

desk

W tym momencie musimy sami przejść przez kluczowe elementy projektu, aby zaktualizować ręcznie dodatek.

Nowe paczki z NuGeta

Zaczniemy migrację o pobrania nowych paczek z NuGeta.

desk

Na zakładce aktualizujemy dostępne nowe składniki i restartujemy IDE, jeśli jest to wymagane.

Aktualizacja vsixmanifest

Kolejnym krokiem jest przejrzenie pliku source.extension.vsixmanifest z definicjami wymagań co do wtyczki i docelowej wersji Visual Studio. Zaczniemy od zakładki Install Targets .

desk

W starej wersji widzimy, iż wtyczka ustawiona była na zgodność jedynie z VS 2015. Rozszerzmy zatem kompatybilność na kolejne wersje. Musimy użyć tutaj zakresu, który określa jakie numery wersji będą wspierane. Można podać konkretne numery np. [14.0,15.0], ale w tym przypadku ustawimy zakres otwarty, bez wpisywania górnej granicy: [14.0,). Dodatkowo dodamy kompatybilność dla edycji Community i Enterprise:

desk

W następnej kolejności zaktualizujemy zależność na zakładce Dependecies .

desk

Tu również pozostawimy możliwość instalacji dla przyszłych wersji IDE:

desk

Ostatnia zakładka jest bardzo ważna, gdyż pojawiła się ona dopiero w Visual Studio 2017. Określa ona elementy jakie muszą być zainstalowane, aby nasza wtyczka mogła działać. W tym przypadku dodałem zależność, która określa istnienie edytora IDE co najmniej w wersji 14.

desk

Po tych czynnościach będziemy już w stanie zbuildować dodatek.

Debugowanie

Pomimo tego iż projekt już się buduje, nie będziemy w stanie go debugowac (w przypadku, gdy nie mamy starej wersji Visual Studio).

desk

Problemem jest debuger, który uruchamia sklonowaną instancję Visual Studio. W tym przypadku chce on uruchomić starszą edycję IDE. Zatem ostatnim krokiem zastaje już tylko podmiana ścieżki na nową:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe

Dokonamy tego we właściwościach projektu, na zakładce Debug , zaznaczając pole Start external program i podając ścieżkę do nowego IDE (przykład wyżej).

desk

Po tych krokach projekt zbuilduję się i będzie możliwe debugowanie go w nowym oknie IDE:

desk

Przypominam, że dostępna jest już w markecie Visual Studio wczesna wersja wtyczki konkursowej Healthy With VS.

Dodatek dostępny jest w markecie pod adresem: Healthy With VS.

desk

Zachęcam do pobierania i testowania pierwszej wersji. Liczę również na feedback z waszej strony.

Źródła dostępne są na GitHubie (branch master i POC): https://github.com/djfoxer/healthyWithVS/

desk