Visual Studio Extensibility: ProvideAutoLoad for Package.cs for every UI Context

一笑奈何 提交于 2019-12-12 10:37:27

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!