在.vsix Visual Studio代码段扩展的.pkgdef中制作什么条目

时间:2018-12-17 23:05:51

标签: c# visual-studio-2017 vsix vsixmanifest

我在Visual Studio 2017中有一个.vsix解决方案,用于部署4个片段片段。

这里是 的样子

每个具有自己的xml或C#代码片段的文件夹都需要它自己的.pkgdef文件吗?还是我们只需要一个直接位于CompanySnippets下的.pkgdef文件?

我问是因为我们有一个带有以下条目的.pkgdef文件

[$RootKey$\Languages\CodeExpansions\CSharp\Paths]
"CompanyCodeSnippets"="$PackageFolder$"

[$RootKey$\Languages\CodeExpansions\Xml\Paths]
"CompanyCodeSnippets"="$PackageFolder$"

但是我们在代码片段方面遇到了无法识别的语言问题,我想我已经将其问题拖到了.pkgdef文件中。

如果我为每个片段片段分别创建一个.pkgdef,我将让它们显示出来。

我对如何查看$ RootKey $的值以及$ PackageFolder $的含义感到困惑。除了MS所说的以外,没有多少关于这些值的文档。我正在调试VS 2017,应该在Registry Computer \ HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 15.0处进行调试,但是该注册表没有Languages \ CodeExpansion,所以我不确定这是否是我们的问题的一部分。

我也不确定$ PackageFolder $是否从子文件夹中获取摘要。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

也许聚会晚了,但这是pkgdef文件https://docs.microsoft.com/en-au/visualstudio/extensibility/substitution-strings-used-in-dot-pkgdef-and-dot-pkgundef-files?view=vs-2015中所有受支持的替换字符串的正式文档。

一个pkgdef就足够了,但是您很可能希望将C#和XML代码段保存在单独的文件夹中,否则代码段管理器可能会感到困惑。

这是您的pkgdef对应部分的外观:

[$RootKey$\Languages\CodeExpansions\CSharp\Paths]
"CompanyCodeSnippets"="$PackageFolder$\CompanyCodeSnippets-CSharp"

[$RootKey$\Languages\CodeExpansions\Xml\Paths]
"CompanyCodeSnippets"="$PackageFolder$\CompanyCodeSnippets-Xml"

(抱歉,如果需要在路径中转义反斜杠字符,我将不记得了)