3

我在 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$ 是否正在从子文件夹中获取片段。

任何帮助深表感谢。

4

1 回答 1

1

也许晚了,但这里是关于 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"

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

于 2019-05-21T12:16:11.923 回答