I have a .vsix solution in Visual Studio 2017 for deploying 4 folders of snippets.
Does each folder that has it's own xml or C# snippets need it's own .pkgdef file? Or do we just need a single .pkgdef file located directly under CompanySnippets?
I ask because we had one .pkgdef file with the following entries
[$RootKey$\Languages\CodeExpansions\CSharp\Paths]
"CompanyCodeSnippets"="$PackageFolder$"
[$RootKey$\Languages\CodeExpansions\Xml\Paths]
"CompanyCodeSnippets"="$PackageFolder$"
But we are getting unrecognized language problems for the snippets and I think I've troubleshot it down to the .pkgdef file.
If I make a seperate .pkgdef for each folder of snippets, I will get them to show up.
I'm confused on how to look at the value of $RootKey$, and what the $PackageFolder$ is really dowing. Not much documentation on these values other than what MS says they are. I was debugging VS 2017 and that should be at Registry Computer\HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\15.0 , but that registry has no Languages\CodeExpansion, so I'm not sure if that is part of our problem.
And I'm also not sure if $PackageFolder$ is grabbing snippets from subfolders.
Any help is much appreciated.
Perhaps late to the party, but here's the official documentation on all the supported substitution strings in pkgdef files: https://learn.microsoft.com/en-au/visualstudio/extensibility/substitution-strings-used-in-dot-pkgdef-and-dot-pkgundef-files?view=vs-2015.
A single pkgdef should be enough, but you'll most likely want to keep the C# and XML snippets in separate folders or else the snippets manager might be confused.
Here's how the corresponding part of your pkgdef should look like:
(apologies, cannot remember off the top of my head if one needs to escape the backslash characters in the paths)