Как да създадете фрагмент от тип „обграждащ звук“ във Visual Studio 2010?

Има ли начин да се създаде „съраунд с“ фрагмент във Visual Studio 2010? Знам как да създам заместващ тип фрагмент. Обикновен съраунд с фрагмент може да обгражда блок от текст с asp:hyperlink. Подобно на начина, по който фрагментите „обграждат с“ по подразбиране могат да обграждат блок от код с asp:панел.


person FiveTools    schedule 05.05.2011    source източник
comment
малко по-различен въпрос, но същият отговор: stackoverflow.com/a/2879206/93394   -  person kmote    schedule 17.07.2014


Отговори (4)


Разгледайте статията на MSDN за създаване на фрагменти. Трябва да ви даде добър старт. Когато създавате своя фрагмент, не забравяйте да му зададете SnippetType от SurroundsWith, за да накарате фрагмента да обгражда избрания код.

За най-новото Visual Studio (понастоящем 2017) има Кодови фрагменти в Microsoft Docs, както и Упътване: Създаване на Кодов фрагмент.

person Community    schedule 05.05.2011
comment
Не знам как го правите, но фрагментите никога не работят за мен! Дори когато заменя кода във вградените и ги поставя в съответната папка! (VsDir\Code Snippets\Visual Basic) или (VsDir\Code Snippets\Visual C#) - person Alex Essilfie; 05.05.2011
comment
@Alex: Винаги използвам Resharper, който има значително превъзходна поддръжка на фрагменти, сред поддръжката за почти всичко останало. - person ; 05.05.2011

Оказва се, че има някои предварително дефинирани идентификатори, които не са добре документирани. По-конкретно за фрагменти от тип SurroundWith има идентификатор $selected$. Така например кодът за фрагмента #if е:

...
<Code Language="csharp">
    <![CDATA[#if $expression$ $selected$ $end$ #endif]]>
</Code>
...

Идентификаторът $end$ показва къде да поставите курсора, когато функцията Surround е завършена. Това всъщност е всичко. Разбира се, не забравяйте да включите SurroundsWith като SnippetType

За повече примери опитайте да разгледате предварително дефинираните фрагменти в C:\Program Files\Microsoft Visual Studio 10.0\\Snippets\1033\.

person DiamondBack    schedule 18.10.2011
comment
VS2012 не съхранява фрагменти на същото място като VS2010. Ако отворите мениджъра на кодови фрагменти и щракнете върху набор от фрагменти, той ще ви покаже пътя, където се съхраняват. Не е на километри, но все още ме спъваше, докато не намерих пътя - person Phil Hale; 17.09.2012
comment
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\Snippets\1033\Visual C# - person SAm; 24.09.2014
comment
Този отговор съдържа документацията, която Microsoft трябваше да напише. Благодаря за споделянето на @DiamondBack. - person Marcel; 13.01.2017
comment
За справка, ключовата дума $selected$ действително Е документирана, заедно с ключовата дума $end$ тук: docs.microsoft.com/en-us/visualstudio/ide/ Трябваше да са включили това в основната си статия за създаване на кодови фрагменти . - person mathias999us; 12.11.2019

Пример и някои съвети (въз основа на предишните отговори) за VS2017:

Примерът е за XML фрагмент, но предполагам, че това ще се отнася повече или по-малко за всеки език.

  1. Поставете кода по-долу във файл и го запазете навсякъде като example.snippet
  2. от VS do Tools->Code Snippet Manager, изберете Language of XML и след това My XML Snippets
  3. Щракнете върху Импортиране и изберете example.snippet.
  4. Щракнете върху Готово и OK
  5. На този етап рестартирах VS, но такива драконовски мерки може да не са необходими.
  6. В XML файл изберете текста, който искате да оградите с para тагове.
  7. Ctrl+K, Ctrl+S, изберете My XML Snippets и след това „Example of a SurroundWith Snippet“.

Тагът ‹para› ще бъде поставен преди вашия текст и ‹/para› след него.

Ако включите завършващ нов ред, тогава получавате допълнителен празен ред след текста и текстът след крайния етикет се появява на същия ред като крайния етикет. Има смисъл, ако се замислите.

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

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Example of a SurroundsWith snippet</Title>
      <Shortcut>shortcutsdontwork</Shortcut>
      <Description>
        complete example of SurroundsWith
        will put para tag on the line above selected text
        and /para end tag on the line below selected text
        will positon the cursor immediately after the
        closing angle bracket of the end tag
      </Description>
      <Author>mikedamay - TheDisappointedProgrammer</Author>
      <SnippetTypes>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Code Language="XML">
        <![CDATA[<para>
        $selected$
        </para>$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

Ще огранича редакционните си коментари относно поведението на кодовите фрагменти във VS2017 до това, че внедряването е необичайно за съвременния екип на Microsoft инструменти. По-специално внимавайте с твърдения за това какво правят преките пътища. Доколкото виждам не правят нищо полезно.

person mikemay    schedule 28.09.2017

Освен полезните отговори по-горе, тук е схема на кодови фрагменти Справка, която е полезна за намиране на валидни стойности за елементи на фрагменти.

person mimo    schedule 07.04.2017