Rozszerzanie Visual Studio.NET 2008 Wrocławska Grupa.NET Paweł Hofman Wrocławska Grupa.NET Software Engineer Silicon & Software Systems (S3)
Agenda Extensibility - O czym mowa ? Nowości w wersji 2008 Sposoby rozszerzania i dostosowywania Własny Add-in Własny pakiet (VS Package) Języki dziedzinowe - DSL Pytania
O czym mowa ? Visual Studio Extensibility zmiana wyglądu IDE własne edytory (lub zmiana istniejących) nowe języki programowania nowe rodzaje projektów szablony i kreatorzy (wizards) okna narzędziowe dostawców usług pliki pomocy
Co nowego w wersji 2008 nowy look-and-feel Visual Studio 2008 Isolated Shell jak.NET to tylko.NET przykłady dokumentacja wersja beta
Jak zacząć ? SDK do wersji 2008
Opcje rozszerzania VisualStudio dostosowanie IDE (Tools Customize) makra dodatki (add-in) pakiety (VS Packages) Wzrost: nakładu pracy możliwości (integracji) SDK
Opcje - szczegóły TypPlusyMinusy dostosowywanie bardzo proste zero możliwości kontroli IDE prócz wyglądu makra automatyzacja pełna kontrola IDE nie można dodać nowych funkcjonalności tylko język Basic jako kod źródłowy
Dostosowywanie i makra Demo
Opcje – szczegóły (2) TypPlusyMinusy dodatki (add-ins) kompilowalne DLL /.NET assembly szybkie umożliwia: - okna narzędziowe - polecenia menu - strony ustawień nie umożliwia: - dokumentów - projektów pakiety (VS Packages) to co dodatki podpis i wersja dostęp ten sam co drużyny piszące obsługę języków: C++ / C# w Microsofcie bardzo skomplikowany model wymaga znajomości COM praktycznie brak dokumentacji
Dodatek (add-in) Demo IDTExtensibility2 IDTCommandTarget - inicjacja - uruchomienie dodatku - status polecenia menu - wykonanie
Jak to działa ? plik.AddIn zapamiętanie odwołania do obiektu DTE (DTE2) wykonanie akcji po wywołaniu polecenia menu
Dodatkowe schemat XSD \ Common7\Packages\schemas Zawierają schematy XSD: walidację IntelliSense podczas pracy z dokumentami XML (lub podobnymi).
Strzępki kodu (CodeSnippets) \VC#\Snippets *.snippet technika kopiuj-wklej ? vs nowa funkcja lub klasa
Architektura pakietu Visual Studio (platforma) interfejsy COM (Native Interfaces) kod pośredniczący (Interop Assemblies) Własny pakiet w.NET Managed Package Framework (MPF) Własny pakiet w kodzie niezarządzanym C++
Jak to działa ? Wideo instruktażowe google + visual studio videos 2008 extensibility Experimental Hive " \Common7\IDE\devenv.exe" /RootSuffix Exp 9.0Exp Reset /SETUP /InstallVSTemplates HKLM vs HKCU = /RANU
Partner VSIP Affiliate (darmowy) Alliance (płatny) Premier (płatny) DLK, PLK i SLK Developer Licence Key Package Licence Key Shell Licence Key
Jak to działa ? (2).VSCT (VS 2008) kod źródłowy.CTC (VS 2005).CTO VS Package.NET PLKSNK.CTO ustawienia okna narzędziowe edytory
Pakiet (VS Package) Demo Package (IVsPackage, IServiceProvider) ToolWindowPane (IVsWindowPane) - inicjacja - uruchomienie pakietu (także opóźnione) - rejestracja i dostęp do usług - implementuje okno narzędziowe
Języki dziedzinowe - DSL dziedzina (encje) relacje Przykłady: SQL.VSCT...
DSL – Model języka diagram (encje) obiekty graficzne Definicja języka VS Projekt (.dsl,.tt) VS Exp (testy diagramu) Produkt
DSL – Model języka (2)
Projekt DSL (VS DSL Package) Demo DslDefinition.dsl DslPackage - opis modelu (pojęć dziedzinowych oraz kształtów) - walidacja - definicja dostępnych narzędzi - automatyczne generowanie pakietu VS dla zadanego modelu
Pytania ?
Źródła Filmy instruktarzowe: google + visual studio videos 2008 extensibility Kody źródłowe: Strona domowa: msdn.microsoft.com/vsx msdn.microsoft.com/vstudio/dsltools blogs.msdn.com/vsxteam/
Rozwinięcia skrótów CTC = Command Table Configuration DTE = Development Tools Environment MPF = Managed Package Framework TT = Text Templates VSCT = Visual Studio Command Table