我有一个代码段string.Format(@"")
,其中包含一个快捷方式sf
,用于插入代码段并将光标放在两个双引号之间。真的很方便。我当然可以正常使用它,只需输入sf
并点击两次标签:
但是,我刚刚发现快捷方式在所有位置都不起作用。例如,如果我正在构建此声明:
if(true) throw new FormatException() // <-- cursor is inside these parens
然后我点击了sf
,快捷方式没有出现在intellisense菜单中,如果我点击 Tab 两次,它就不会生成片段。为什么呢?
我试过搜索“C#代码段快捷键有时不起作用”,“C#代码段快捷方式不起作用”,“Visual Studio代码段有时不起作用”等等,我不能找到任何有用的东西。
编辑:以下是代码段定义:
<?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>
</SnippetTypes>
<Title>String.Format with @</Title>
<Author>Rory</Author>
<Description>
</Description>
<HelpUrl>
</HelpUrl>
<Shortcut>sf</Shortcut>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>anchor</ID>
<ToolTip>
</ToolTip>
<Default>
</Default>
<Function>
</Function>
</Literal>
</Declarations>
<Code Language="csharp" Delimiter="$" Kind="method body"><![CDATA[string.Format(@"$selected$$end$")]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
答案 0 :(得分:2)
根据docs Kind属性确定您可以使用该片段的位置 - 您已指定&#34;方法正文&#34;你应该指定&#34;任何&#34;
答案 1 :(得分:1)
我刚刚创建并测试了(在VS2013和VS2015中)我自己的代码片段,它按预期工作:
这就是它的样子:
<?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>
</SnippetTypes>
<Title>SnippetFile1</Title>
<Author>me@example.com</Author>
<Description>
</Description>
<HelpUrl>
</HelpUrl>
<Shortcut>sf</Shortcut>
</Header>
<Snippet>
<Code Language="csharp" Delimiter="$"><![CDATA[string.Format(@"$end$")]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
用于创建和编辑代码段the Snippet Designer is a must have。