我可以在VS 2010中使用代码片段替换多个项目

时间:2010-09-06 08:55:37

标签: visual-studio-2010 code-snippets

我有一个非常简单的代码snitppet,如下所示:

<asp:Label Text="$Name$" runat="server" AssociatedControlID="$txtName$" />
<asp:TextBox runat="server" ID="$txtName$" />
<br />

我希望是$txtName$在两个地方都会被更改,但事实并非如此,只有第一个实例被更改,我甚至无法切换到第二个实例。

有解决方法吗?

3 个答案:

答案 0 :(得分:1)

这应该对我有用。

您能否展示完整的代码段文件?这是一个有效的,typefieldName被多次替换:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <Header>
        <Title>Non-automatically implemented property</Title>
        <Author>Richard Cox</Author>
        <Shortcut>propf</Shortcut>
        <Description>Property with exlicit field</Description>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>propName</ID>
                <ToolTip>Property Name</ToolTip>
                <Default>Name</Default>
            </Literal>
            <Literal>
                <ID>fieldName</ID>
                <ToolTip>Field Name</ToolTip>
                <Default>field</Default>
            </Literal>
            <Literal>
                <ID>type</ID>
                <ToolTip>Property type</ToolTip>
                <Default>string</Default>
            </Literal>
        </Declarations>
        <Code Language="csharp">
            <![CDATA[private $type$ $fieldName$;
    public $type$ $propName$ {
        get { return $fieldName$;}
        set { $fieldName$ = value;}
    }

    $end$]]>
        </Code>
    </Snippet>
</CodeSnippet>

答案 1 :(得分:1)

事实证明,更换工作正常,但不是我输入的。因此,我可以键入我需要的内容,然后为了更改其他属性,我必须将焦点从片段中移开,因此按下向下箭头键可以完成工作。

答案 2 :(得分:1)

有趣的场景开始时,您希望使用$ selected $两次创建环绕片段。例如,创建CheckArgumentForNull片段以检查null的参数,并且在null的情况下,使用参数名称引发ArgumentNullException。后来才被取代。

有什么想法吗?当然,我们可以自己使用仅扩展片段和类型参数名称。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
      <Title>notnull</Title>
      <Author>Viiar Consulting</Author>
      <Description>Code snippet for checking whether is argument null</Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>notnull</Shortcut>
    </Header>
    <Snippet>
      <Imports>
        <Import>
          <Namespace>System</Namespace>
        </Import>
      </Imports>
      <Declarations>
        <Literal Editable="true">
          <ID>argument</ID>
          <ToolTip>
          </ToolTip>
          <Default>argument</Default>
          <Function>
          </Function>
        </Literal>
      </Declarations>
      <Code Language="csharp"><![CDATA[if ($selected$ == null)
{
    throw new ArgumentNullException("$selected$");
}
$end$]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>