[Useful Info] C# Basics - Създаване на Code Snippets във Visual Studio
Предполагам много от вас ползват code snippet командите в Visual Studio, cw-tab-tab изкарва Console.WriteLine() for-tab-tab създава целия for цикъл и с щракане на tab може да си сменяш името на брояча или да му кажеш до кога да се върти. Снощи както си разцъквах задачи в Visual Studio-то и видях че в менюто Tools има едно нещо кеото се казва Code Snippet Manager. И надъхания програмист бам в Гугъл: "how to create code snippets in Visual Studio tutorial" :D. Четах, гледах маех и накрая разбрах как се създават собствени клавишни комбинации които при tab-tab ти изписват това което искаш.
Снощи до 4 сутринта съм си правил снипети :D. Направих си "cr" да ми изписва Console.ReadLine(); "ca"
и "cl" съответно са "Create array" и "Create List" както и други които сметнах че ще са ми полезни. Какво по-яко от това да споделиш с надъханите колеги как и те да си направят собствени (междувремнно и да се получи някой друг плюс :D). След малкта предистория да започнем по същество! :)
Процедура за създаване на Code Snippet:
Създване на файл
Създавате нов .xml файл. File - New - File или (ctr + N), от менюто "General" си избирате
"XML File"
Тук следва празна бланка за това какво трябва да съдържа файла плюс коментари за обяснение. Копие на бланката тук.
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/CodeSnippet">
<CodeSnippet Format="1.0.0">
<!-- The header contains information describing the snippet. -->
<Header>
<!-- The Title of the snippet, this will be shown in the snippets manager. -->
<Title>cr</Title>
<!-- The set of characters that must be keyed in to insert the snippet. -->
<Shortcut>cr</Shortcut>
<!-- The description of the snippet or the information that will be shown in the IntelliSense manager. -->
<Description>Inserts an Apex Notifying Property.</Description>
<!-- The author of the snippet. -->
<Author>Deyan Dachev</Author>
<!-- The set of snippet types we're dealing with - either Expansion,
SurroundsWith or both. -->
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<!-- Now we have the snippet itself. -->
<Snippet>
<!--Here we put all our functions(moving between tabs like moving between
name and counter value in the for-tab-tab snippet) -->
<Declarations>
<Literal>
<ID>Name of function</ID>
<ToolTip>Information shown on mouse hover</ToolTip>
<Default>Default value of the function</Default>
</Literal>
<Literal>
<ID></ID>
<ToolTips></ToolTips>
</Literal>
</Declarations>
<!-- Sepecify the code language and the actual snippet content. --> <Code Language="CSharp" >
<!-- <![CDATA[Your code goes here]]> --> <![CDATA[Console.ReadLine();]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
За да стане по ясно как да попълните бланката можете да разгледате някой от файловете които създадох:
1. ipr - int name = int.Parse(Console.ReadLine()); // нов int чакащ вход от потребителя
2. ca - type[] name = new type[size]; // създава нов празен масив
3. cl - List<type> name = new List<type>(); // създава нов лист от вид променлива
4. str - string name = Console.ReadLine(); // нов стринг чакащ вход от usera
Също така можете да разгледате как са написани вградените snippet-и, като заредите .snippet файловете в VS или друг текстов редактор. Директорията на вградените snippet-и съм написал малко по-долу.
Програмна част.
Единственото "програмиране" което има в целия код е местата които можете да попълвате
с натискане на tab. За да се създадът функци на тези места, ID-тата им(които си измисляте вие) се ограждат със две доларчете: $name$ ,$type$, $size$ или др. След това в <Declarations> блока трябва да въветедет <Literal> който да слага някаквa default стойност на тези места. Най-добре погледнете пейстовете които съм дал по-горе за да стане по ясно. Има две други функции които са вградени в XML и няма нужда да бъдат записвани в отделен <Literal> таг. Едната е $end$ която казва: като си напишеш всички таб функции(ако има такива) и натиснеш "enter" курсорът ще отиде на това място. Другата е $selected$ която не ми стана напълно ясно как действа но и не ми се наложи да я ползвам. Моля ако има някакви въпроси по кода да питате :).
Запазване на файла.
След като си напишем кода трябва да си запазим файла като snippName.snippet. Директория в която се съдържат вградените Code Snippet-и е D:\Visual Studio 2013\VC#\Snippets\1033. Аз си създадох една папка \Snippetes\MySnipps в която запазих всичките файлове. Те могат да са където и да е в компютъра ви, но мисля че е най-добре да са в директорията на VS.
Вграждане в VS.
За да вкараме shortcut комбинацията в IntelliSense на VS отиваме в Tools - Code Snippet Manager - Import - избираме си .snippet файла който да вкараме и Finish.
Party time!
Вече си имаме собствени shortcut комбинации които да ползваме когато си пожелаем! :).
Всякакви въпроси , неяснотии по създаването на файла и feedback са добре дошли!
Ако на някой му харесват моите Code Snippet-и може да изтегли архив от тук.
Best Regards, Деян Дачев :)
P.S Попринцип има plugins с които могат да се създават code snippet-и по-лесно, но лично за мен е много по удовлетворяващо да си ги направя сам.
P.P.S Тепърва ще почвам да редактирам поста от правописни грешки и подобни , така че да не ви прави впечатление. :D