Какую запись сделать в.pkgdef для расширения.vsix Visual Studio Snippets
У меня есть решение.vsix в Visual Studio 2017 для развертывания 4 папок фрагментов.
Нужно ли каждой папке, имеющей свои собственные фрагменты xml или C#, свой собственный файл.pkgdef? Или нам нужен только один файл.pkgdef, расположенный прямо под CompanySnippets?
Я спрашиваю, потому что у нас был один файл.pkgdef со следующими записями
[$RootKey$\Languages\CodeExpansions\CSharp\Paths]
"CompanyCodeSnippets"="$PackageFolder$"
[$RootKey$\Languages\CodeExpansions\Xml\Paths]
"CompanyCodeSnippets"="$PackageFolder$"
Но у нас возникают непризнанные языковые проблемы для фрагментов кода, и я думаю, что устраню их до файла.pkgdef.
Если я создам отдельный файл.pkgdef для каждой папки фрагментов, я их покажу.
Я запутался в том, как посмотреть на значение $RootKey$ и на что действительно влияет $PackageFolder$. Не много документации по этим значениям, кроме того, что MS говорит, что они есть. Я отлаживал VS 2017, и он должен находиться в реестре компьютера \HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\15.0, но в этом реестре нет Languages \CodeExpansion, поэтому я не уверен, является ли это частью нашей проблемы.
И я также не уверен, что $PackageFolder$ захватывает фрагменты из подпапок.
Буду признателен за любую оказанную помощь.
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"
(извиняюсь, не могу вспомнить, если мне нужно убрать символы обратной косой черты в путях)