Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Fleshian avatar Fleshian 379 Точки

[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

Тагове:
60
Programming Basics
Bullsized avatar Bullsized 153 Точки

удряйте си по едно $end$ там, където искате да ви е курсор блинка след употреба на снипета, например ако
cr таб таб ви изкарва Console.ReadLine(); директно след точката и запетаята да ви излиза курсора, за да можете
директно да натиснете ентър и да слезете на долния ред ;) 

it'z the little thingz :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.