Pisząc kod często używamy takich samych fragmentów kodów. Nie chodzi o to, że w jednym projekcie dublujemy kod ale o sytuację gdy kod z jednego projektu przydaje się w wielu innych. Jest wiele technik wsparcia takich sytuacji, a jedną z nich jest tworzenie Snippet’ów. Kawałki kodu, o których mowa tworzy się różnie w zależności od przeznaczenia. Pokażę jak stworzyć Snippet’y w XML’u, które bardzo przydają się przy pisaniu rozwiązań pod SharePoint'a.
Snippet jest to stały fragment/kawałek kodu, który można "cytować" w wielu miejscach bez dodatkowego nakładu pracy. Dario-G w jednym ze swoich postów
C# Snippet opisał sposób tworzenia Snippet’ów dla kodu w C#, więc ja postaram się pokazać jak tworzyć Snippet'y dla kodu XML. Moje zainteresowanie tematem wzięło się przy okazji tworzenia rozwiązań pod SharePoint'a. Tak się składa, że pisząc w tej technologii często używa się XML’a. Inaczej niż ma to miejsce w przypadku C#, Visual Studio nie zawiera Snippet'ów do XML'a. W zależności od wersji Visual Studio Snippet'y umieszcza się w katalogu:
$:\Program Files\Microsoft Visual Studio 8\Xml\1033\Snippets - dla Visual Studio 2005
$:\Program Files\Microsoft Visual Studio 9.0\Xml\1033\Snippets - dla Visual Studio 2008
Czasami może się zdarzyć że Visual Studio nie wyświetli nowo wgranych Snippet’ów więc najpierw trzeba spróbować zrestartować Visual Studio. Jeśli to nie pomoże zaimportować kawałki kodu możemy wykorzystując narzędzie Code Snippets Manager (Menu Tools).
Tworzenie własnych Snippet'ów nie jest trudne, wymaga napisania kawałka kodu XML i zapisania tego pliku z rozszerzeniem *.snippet. Wychodząc z zasady, że jeden przykład jest warty więcej niż tysiąc słów zamieszczam poniżej przykładową strukturę pliku XML odpowiedzialnego za funkcjonalność Snippet'u.
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Author>Michał Nikołajuk</Author>
<Title>Feature with Receiver</Title>
<Description>Kod potrzebny do napisania funkcji Z ReveiverAssembly oraz ReceiverClass</Description>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>guid</ID>
<ToolTip>Unikalny identyfikator - GUID</ToolTip>
<Default>003BA372-EABD-4e75-9275-F11E757B3AED</Default>
</Literal>
<!-- Reszta pól -->
</Declarations>
<Code Language="XML">
<![CDATA[
<Feature Id="$guid$"
Title="$title$"
Description="$description$"
Version="$version$"
Scope="$scope$"
Hidden="$hidden$"
ImageUrl="$imageUrl$"
ReceiverAssembly="$nameAssembly$,
ReceiverClass="$receiverClass$"
xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- Wewnętrzne elementy które składają się na funkcję -->
<ElementManifests>
<ElementManifest Location="element.xml" />
</ElementManifests>
</Feature>
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
W pliku XML do głównych sekcji zaliczamy:
<Header> </Header> sekcja służy do umieszczania informacji o autorze oraz definiujemy w niej właściwości ogólne Snippet'u. W sekcji możemy ustawić właściwości, nie wszystkie są wymagane:
- Author - autor,
- Title - nazwa wyświetlana w Visual Studio,
- Description - opis pokazywany w Visual Studio po najechaniu na Snippet,
- HelpUrl - adres pod którym możemy znaleźć więcej szczegółów na temat tego Snippet'u,
- Keywords - słowa kluczowe według których można skategoryzować zbiór kawałków kodu,
- SnippetType - sposób w jaki wstawiamy Snippet w Visual Studio.
<Declarations></Declarations> deklarujemy zmienne, które będą do uzupełnienia podczas wstawiania Snippet'u. Po wstawieniu kawałka kodu w Visual Studio za pomocą klawisza Tab możemy przechodzić pomiędzy zmiennymi i ustawiać ich wartość. Przykładowy węzeł opisujący jedną zmienną:
<Literal>
<ID>guid</ID>
<ToolTip>Unikalny identyfikator - GUID</ToolTip>
<Default>003BA372-EABD-4e75-9275-F11E757B3AED</Default>
</Literal>
gdzie:
ID - nazwa kodowa zmiennej, używana w sekcji <Code></Code>,
ToolTip - opis który pojawi się przy najechaniu kursorem na miejsce wstawienia zmiennej,
Default - wartość domyślna zmiennejSnippet'u.
<Code></Code> kod który będzie wstawiony w Visual Studio. Kod który wpiszemy w tej sekcji będzie łączony z zadeklarowanymi w sekcji Declarations zmiennymi tworząc kawałek kodu . W tej sekcji często pojawia się wyrażenie tekstowe typu: $guid$. W środku $....$ umieszczamy nazwę kodową zmiennej zdefiniowanej w węźle Literal.
Gdy już stworzymy własny Snippet i przekopiujemy go do odpowiedniego katalogu to w Visual Studio znajdziemy go w menu wywołanym prawym kliknięciem myszki na obszarze roboczym.

W poście nie opisałem dokładnie wszystkich węzłów, które można użyć przy tworzeniu Snippet'a. W linkach na końcu postu podaje adres strony z MSDN gdzie znajdują się dokładne opisy każdego węzła.
Tak jak już wspomniałem zająłem się tworzeniem Snippet'ów bo skracało to czas w jaki mogłem napisać rozwiązanie pod SharePoint. Ucząc się definiować kawałki kodu stworzyłem zbiór 18 Snippet'ów, zawierających 14 najczęściej używanych XML'i i 4 kawałki kodu w C#. Jestem pewien, że będą pomocne każdemu programiście SharePoint, można je
pobrać.
Linki:
Opis wszystkich węzłów w pliku snippet'u.
Dodany:
2009-05-02 22:52:40 przez
Michał Nikołajuk |
Wypowiedzi: 5