2016-06-13 15 views
7

Seit einiger Zeit habe ich ein benutzerdefiniertes Visual Studio Code-Snippet, um bei der Injektion eines Urheberrechts-Headers in meine C# -Quelldateien zu helfen. Es sieht etwa so aus:Visual Studio 2015 Code-Snippet mit signifikanten nachgestellten Leerzeichen

<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <Header> 
    <Title>File Header</Title> 
    <Author>Me</Author> 
    <Shortcut>header</Shortcut> 
    <Description>Inserts a standard copyright header.</Description> 
    <SnippetTypes> 
     <SnippetType>Expansion</SnippetType> 
    </SnippetTypes> 
    </Header> 
    <Snippet> 
    <Declarations> 
     <Literal> 
     <ID>FileName</ID> 
     <ToolTip>The name of the C# code file.</ToolTip> 
     <Default>FileName</Default> 
     </Literal> 
    </Declarations> 
    <Code Language="CSharp"><![CDATA[// ----------------------------------------------------------------------- 
// <copyright file="$FileName$.cs" company="Company Name"> 
// Copyright © 2011-2016 by Company Name. All rights reserved. 
// </copyright> 
// ----------------------------------------------------------------------- 

]]></Code> 
    </Snippet> 
</CodeSnippet> 

Das Wichtigste für diese Frage zu beachten ist, die beiden Endlinien am Ende des CDATA-Block Hinter. In Editionen von Visual Studio vor 2015 konnte ich meinen Cursor an den Anfang einer Datei setzen, direkt vor der ersten Deklaration, geben Sie header+TAB ein, und meine Überschrift würde mit einer zusätzlichen leeren Zeile zwischen dem letzten Kommentar und der ersten Verwendung erscheinen Erklärung.

Visual Studio 2015 scheint die nachfolgenden Leerzeichen nicht zu berücksichtigen. Wenn ich header+TAB eintippe, wird die erste using-Deklaration in der gleichen Zeile wie der letzte Kommentar angezeigt.

Betrachte ich einen Fehler oder gibt es eine Möglichkeit, meinen Codeausschnitt so zu konfigurieren, dass Visual Studio 2015 die nachgestellten Leerzeichen berücksichtigt?

+0

Haben Sie versucht, \ n auf die letzte Zeile zu setzen? –

+0

Danke @PaulSwetz. Leider bringt das Snippet den literalen Text '\ n' in meine Quelldatei. Ebenso wird das Problem durch das Hinzufügen von ' ' außerhalb des CDATA-Blocks (XML-Äquivalent von '\ r \ n') nicht behoben. – kbrimington

+0

Das Gemeinsame, was ich sehe, die Schnipsel zu schauen, die mit VS kommen, ist der meiste Code Ende mit $ end $ Beispiel vom Schalter \t

Antwort

5

Die gemeinsame Sache, die ich zu sehen bin auf den Schnipseln suche, der mit VS kommen, ist die meisten der Code endet mit $end$

Beispiel aus-Schalter:

<Code Language="csharp"><![CDATA[switch ($expression$) { $cases$ }*$end$*]]> </Code> 

Platz $end$ am Ende der nachfolgenden Leerzeichen , wie folgt:

<![CDATA[// ----------------------------------------------------------------------- 
// <copyright file="$FileName$.cs" company="Company Name"> 
// Copyright © 2011-2016 by Company Name. All rights reserved. 
// </copyright> 
// ----------------------------------------------------------------------- 

$end$]]>