我如何找到(并在必要时修复)我创建的代码片段?
How can I find (and rehabilitate, if necessary) the Code Snippet I created?
我主要使用 this article 作为指导创建了一个代码片段(希望是众多代码片段中的第一个)。
它似乎起作用了。以下是我采取的步骤:
首先,我使用代码片段 (HtmlTableRowWithTwoCells.snippet) 创建了这个文件:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/CodeSnippet">
<CodeSnippet Format="1.0.0">
<!-- The Title of the snippet, this will be shown in the snippets manager. -->
<Title>Create a 2-Cell HTML Table Row</Title>
<!-- The description of the snippet. -->
<Description>Creates a 2-Cell Row to be added to an HtmlTable</Description>
<!-- The author of the snippet. -->
<Author>Warble P. McGorkle for Platypi R Us (Duckbills Unlimited)</Author>
<!-- The set of characters that must be keyed in to insert the snippet. -->
<Shortcut>row2</Shortcut>
<!-- The set of snippet types we're dealing with - either Expansion or -->
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<!-- Now we have the snippet itself. -->
<Snippet>
<Declarations>
<Literal>
<ID>RowName</ID>
<ToolTip>Enter the Row instance name</ToolTip>
<Default>RowName</Default>
</Literal>
<Literal>
<ID>Cell1Name</ID>
<ToolTip>Enter the name for Cell 1</ToolTip>
<Default>Cell1Name</Default>
</Literal>
<Literal>
<ID>Cell2Name</ID>
<ToolTip>Enter the name for Cell 2</ToolTip>
<Default>Cell2Name</Default>
</Literal>
</Declarations>
<!-- Sepecify the code language and the actual snippet content. -->
<Code Language="CSharp" Kind="any">
<![CDATA[
var $RowName$ = new HtmlTableRow();
var $Cell1Name$ = new HtmlTableCell();
var $Cell2Name$ = new HtmlTableCell();
$RowName$.Cells.Add($Cell1Name$);
$RowName$.Cells.Add($Cell2Name$);
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
然后,我创建了这个 "manifest" 文件 (.vscontent):
<?xml version="1.0" encoding="utf-8" ?>
<VSContent xmlns="http://schemas.microsoft.com/developer/vscontent/2005" >
<Content>
<FileName>HtmlTableRowWithTwoCells.snippet</FileName>
<DisplayName>Inserts a 2-Cell HTML Table Row</DisplayName>
<Description>Inserts a 2-Cell Row to be added to an HtmlTable</Description>
<FileContentType>Code Snippet</FileContentType>
<ContentVersion>2.0</ContentVersion>
<Attributes>
<Attribute name="lang" value="csharp"/>
</Attributes>
</Content>
</VSContent>
我将这两个文件压缩在一起,将扩展名从 .zip 重命名为 .vsi,单击 2 次,然后按照以下步骤将其安装到 "My Code Snippets" 文件夹中:
这表明代码段 已 安装在合理的位置:
然而,当我尝试在 VS 中添加代码片段时,我看到的唯一类别是这些(没有 "My Code Snippets"):
当我 select 工具 > 代码片段管理器...时,我可以导航到 Visual C# > 我的代码片段,但它是空的。
当我使用代码片段管理器的 "Import" 按钮并导航到片段的位置并尝试添加片段文件时,我得到,“选择的片段文件无效."
为什么它告诉我它安装成功,而它显然没有(或者它藏在哪里)?我忽略了哪个火圈?
"manifest" 文件的 "weird" 名称可能是问题所在吗? “.vscontent”对我来说似乎很奇怪,但这就是上面引用的文章所说的命名方式。也许那只是疏忽,它真的应该是 [snippetName].vscontent?
更新
显然,将 "manifest" 文件命名为 *.vscontent" 不是问题。也许是 a 问题,但不是 the 问题,因为我把它命名为与.snippets 文件相同(扩展名除外),重新安装过程,得到完全相同的结果:看似成功,实际士气低落。
顺便说一句,默认情况下,在选择要放置代码片段的类别时,代码片段管理器会在 "Microsoft Visual Studio Tools for Applications 2005 > My Code Snippets" 中放置一个复选框。我之前没有勾选它并勾选了最上面的 "My Code Snippets";这次我保留了默认的 selection,加上我喜欢的 location/category PLUS "Visual C#"
但遗憾的是,在 VS 中似乎通过 Ctrl+K、X 显示的唯一类别是 C#,并且预期的快捷方式 ("row2") 没有出现在代码段下拉列表中。
这是一个更简单的方法(而且,作为奖励,它有效):
下载代码段设计器:
直接把代码写在Visual Studio:
var RowName = new HtmlTableRow();
var Cell1Name = new HtmlTableCell();
var Cell2Name = new HtmlTableCell();
RowName.Cells.Add(Cell1Name);
RowName.Cells.Add(Cell2Name);
右击 select "Export as Snippet"
这会将代码放入片段设计器中。这是设置一些属性并选择代码的哪些部分可替换后的样子:
这很简单 - 肯定比我尝试的 "olde-fashioned" 方法要好(如果它有效的话,这本来没问题)。
我所要做的就是在添加新代码段时右键单击要替换的代码元素,在解决方案资源管理器中设置代码段的快捷方式和描述属性,保存它,瞧!
现在在 VS 中组合 Ctrl+K、X 会显示 "My Code Snippets" 中的片段及其描述和快捷方式:
选择它会添加带有突出显示的替换字符串的片段:
我主要使用 this article 作为指导创建了一个代码片段(希望是众多代码片段中的第一个)。
它似乎起作用了。以下是我采取的步骤:
首先,我使用代码片段 (HtmlTableRowWithTwoCells.snippet) 创建了这个文件:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/CodeSnippet">
<CodeSnippet Format="1.0.0">
<!-- The Title of the snippet, this will be shown in the snippets manager. -->
<Title>Create a 2-Cell HTML Table Row</Title>
<!-- The description of the snippet. -->
<Description>Creates a 2-Cell Row to be added to an HtmlTable</Description>
<!-- The author of the snippet. -->
<Author>Warble P. McGorkle for Platypi R Us (Duckbills Unlimited)</Author>
<!-- The set of characters that must be keyed in to insert the snippet. -->
<Shortcut>row2</Shortcut>
<!-- The set of snippet types we're dealing with - either Expansion or -->
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<!-- Now we have the snippet itself. -->
<Snippet>
<Declarations>
<Literal>
<ID>RowName</ID>
<ToolTip>Enter the Row instance name</ToolTip>
<Default>RowName</Default>
</Literal>
<Literal>
<ID>Cell1Name</ID>
<ToolTip>Enter the name for Cell 1</ToolTip>
<Default>Cell1Name</Default>
</Literal>
<Literal>
<ID>Cell2Name</ID>
<ToolTip>Enter the name for Cell 2</ToolTip>
<Default>Cell2Name</Default>
</Literal>
</Declarations>
<!-- Sepecify the code language and the actual snippet content. -->
<Code Language="CSharp" Kind="any">
<![CDATA[
var $RowName$ = new HtmlTableRow();
var $Cell1Name$ = new HtmlTableCell();
var $Cell2Name$ = new HtmlTableCell();
$RowName$.Cells.Add($Cell1Name$);
$RowName$.Cells.Add($Cell2Name$);
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
然后,我创建了这个 "manifest" 文件 (.vscontent):
<?xml version="1.0" encoding="utf-8" ?>
<VSContent xmlns="http://schemas.microsoft.com/developer/vscontent/2005" >
<Content>
<FileName>HtmlTableRowWithTwoCells.snippet</FileName>
<DisplayName>Inserts a 2-Cell HTML Table Row</DisplayName>
<Description>Inserts a 2-Cell Row to be added to an HtmlTable</Description>
<FileContentType>Code Snippet</FileContentType>
<ContentVersion>2.0</ContentVersion>
<Attributes>
<Attribute name="lang" value="csharp"/>
</Attributes>
</Content>
</VSContent>
我将这两个文件压缩在一起,将扩展名从 .zip 重命名为 .vsi,单击 2 次,然后按照以下步骤将其安装到 "My Code Snippets" 文件夹中:
这表明代码段 已 安装在合理的位置:
然而,当我尝试在 VS 中添加代码片段时,我看到的唯一类别是这些(没有 "My Code Snippets"):
当我 select 工具 > 代码片段管理器...时,我可以导航到 Visual C# > 我的代码片段,但它是空的。
当我使用代码片段管理器的 "Import" 按钮并导航到片段的位置并尝试添加片段文件时,我得到,“选择的片段文件无效."
为什么它告诉我它安装成功,而它显然没有(或者它藏在哪里)?我忽略了哪个火圈?
"manifest" 文件的 "weird" 名称可能是问题所在吗? “.vscontent”对我来说似乎很奇怪,但这就是上面引用的文章所说的命名方式。也许那只是疏忽,它真的应该是 [snippetName].vscontent?
更新
显然,将 "manifest" 文件命名为 *.vscontent" 不是问题。也许是 a 问题,但不是 the 问题,因为我把它命名为与.snippets 文件相同(扩展名除外),重新安装过程,得到完全相同的结果:看似成功,实际士气低落。
顺便说一句,默认情况下,在选择要放置代码片段的类别时,代码片段管理器会在 "Microsoft Visual Studio Tools for Applications 2005 > My Code Snippets" 中放置一个复选框。我之前没有勾选它并勾选了最上面的 "My Code Snippets";这次我保留了默认的 selection,加上我喜欢的 location/category PLUS "Visual C#"
但遗憾的是,在 VS 中似乎通过 Ctrl+K、X 显示的唯一类别是 C#,并且预期的快捷方式 ("row2") 没有出现在代码段下拉列表中。
这是一个更简单的方法(而且,作为奖励,它有效):
下载代码段设计器:
直接把代码写在Visual Studio:
var RowName = new HtmlTableRow();
var Cell1Name = new HtmlTableCell();
var Cell2Name = new HtmlTableCell();
RowName.Cells.Add(Cell1Name);
RowName.Cells.Add(Cell2Name);
右击 select "Export as Snippet"
这会将代码放入片段设计器中。这是设置一些属性并选择代码的哪些部分可替换后的样子:
这很简单 - 肯定比我尝试的 "olde-fashioned" 方法要好(如果它有效的话,这本来没问题)。
我所要做的就是在添加新代码段时右键单击要替换的代码元素,在解决方案资源管理器中设置代码段的快捷方式和描述属性,保存它,瞧!
现在在 VS 中组合 Ctrl+K、X 会显示 "My Code Snippets" 中的片段及其描述和快捷方式:
选择它会添加带有突出显示的替换字符串的片段: