Я сделал собственный фрагмент для использования в Visual Studio. В VS2013 он работал так, как ожидалось, но поскольку он использовался в VS2015 (Community Edition), он вставлял дополнительную строку новой строки перед кодом (справа, когда я нажимаю вкладку/вводить второй раз).
Кажется, это только проблема с пользовательским фрагментом (встроенные работают нормально). Кто-нибудь знает, что может быть причиной этого? Это очень раздражает.
Как побочная заметка, это происходит только в том случае, если я активирую фрагмент на пустой строке кода. Если я сделаю это после существующего кода, новая строка не будет вставлена. К сожалению, фрагмент - это утверждение, поэтому это мало помогает.
Здесь фрагмент, скопированный почти полностью из образца VS:
<?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>Insert Field Add</Title>
<!-- The description of the snippet. -->
<Description>Inserts a basic field add for a DataObject</Description>
<!-- The author of the snippet. -->
<Author>Thomas Price</Author>
<!-- The set of characters that must be keyed in to insert the snippet. -->
<Shortcut>fadd</Shortcut>
<!-- The set of snippet types we're dealing with - either Expansion or -->
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<!-- Now we have the snippet itself. -->
<Snippet>
<!-- Create any declarations that we use in the snippet. -->
<Declarations>
<Literal>
<ID>FieldName</ID>
<ToolTip>Enter the field name</ToolTip>
<Default>field</Default>
</Literal>
</Declarations>
<!-- Sepecify the code language and the actual snippet content. -->
<Code Language="CSharp" Kind="any">
<![CDATA[$FieldName$ = fields.add($FieldName$, "$FieldName$");]]>
</Code>
</Snippet>
</CodeSnippet>