在同一行上展开C#VS片段

时间:2015-09-11 10:43:12

标签: visual-studio code-snippets

使用自定义代码段时,VS似乎总是在下一行展开代码段,创建一个不需要的空行。

我该如何防止这种情况?

实施例

自定义代码段:

<CodeSnippet Format="1.0.0">
<Header>
  <SnippetTypes>
    <SnippetType>Expansion</SnippetType>
  </SnippetTypes>
  <Title>Argument not null check</Title>
  <Shortcut>an</Shortcut>
</Header>
<Snippet>
  <Declarations>
    <Literal Editable="true">
      <ID>argument</ID>
      <ToolTip>Argument name</ToolTip>
      <Default>arg</Default>
    </Literal>
  </Declarations>
  <Code Language="csharp" Kind="method body" Delimiter="$"><![CDATA[if ($argument$ == null)
throw new ArgumentNullException("$argument$");]]></Code>
</Snippet>
</CodeSnippet>

我期望(和喜欢)片段如何工作:

public void Concat(string a, string b)
{
    an
    an

    return a + b;
}
...
public void Concat(string a, string b)
{
    if (a == null)
        throw new ArgumentNullException("a");
    if (b == null)
        throw new ArgumentNullException("b");

    return a + b;
}

它是如何运作的:

public void Concat(string a, string b)
{

    if (a == null)
        throw new ArgumentNullException("a");

    if (b == null)
        throw new ArgumentNullException("b");

    return a + b;
}

奇怪的是CodeContract片段按预期工作,但是比较xml我看不出它们是如何不同的,即使我使用单行自定义片段。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题并做了一些测试。当代码段不包含$end$标记时,Visual Studio 2015似乎会插入一个空行。如果您在$end$标记内的CDATA部分末尾插入<Code>标记,则Visual Studio将停止在代码段的开头添加一个空白行。

对我来说似乎是一个错误。 Visual Studio 2013没有出现此问题。