有一段时间我有一个自定义的Visual Studio代码片段来帮助在我的C#源文件中注入版权标题.它看起来像这样:
<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>
这个问题需要注意的重要事项是CDATA块末尾的两个尾随终点线.在2015年之前的Visual Studio版本中,我可以将光标放在文件的开头,就在第一个使用声明之前,键入标题TAB,我的标题会在最后一个注释和第一个注释之间显示一个额外的空行使用声明.
Visual Studio 2015似乎不尊重尾随空格.当我输入标题TAB时,第一个使用声明出现在与最后一个注释相同的行上.
解决方法
我看到VS附带的片段的常见问题是大多数代码以$end $结尾
交换机示例:
<Code Language="csharp"><![CDATA[switch ($expression$) { $cases$}*$end$*]]> </Code>
将$end $放在尾随空格的末尾,如下所示:
<![CDATA[// ----------------------------------------------------------------------- // <copyright file="$FileName$.cs" company="Company Name"> // Copyright © 2011-2016 by Company Name. All rights reserved. // </copyright> // ----------------------------------------------------------------------- $end$]]>