问题
My goal is to create a "Visual Studio Extensibility" which adds a "Npm install" Context Menu Item to a package.json file.
So far, this works great if I open a solution, because I've added the [ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids.SolutionExists)]
attribute to the Package class.
But it's not working if I open a Web Site (File->Open->Web Site...). Do you have any idea, how I can AutoLoad the Package.cs for every UI Context?
Edit: More information after further investigation: If I save the Web Site as a Solution, the "Initialize"-Method is called. But the BeforeQueryStatus of the MenuItem of package.json is not called. The solution structure looks like this:
-Solution
-project
-package.json
If I add the package.json directly into the solution, the Context Menu Item appears. Structure:
-Solution
-Solution Items
-package.json
-project
Any ideas?
回答1:
Add the below code to your package definition:
[ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasMultipleProjects_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasSingleProject_string)]
Your package should load in all scenarios.
回答2:
You can add the second ProvideAutoLoad attribute with the NoSolution value to load your package in all contexts.
来源:https://stackoverflow.com/questions/27687954/visual-studio-extensibility-provideautoload-for-package-cs-for-every-ui-context