Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 668
Tineler Avatar asked Dec 29 '14 11:12

Tineler


2 Answers

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.

like image 159
Kaveesh Avatar answered Oct 11 '22 02:10

Kaveesh


You can add the second ProvideAutoLoad attribute with the NoSolution value to load your package in all contexts.

like image 30
Sergey Vlasov Avatar answered Oct 11 '22 00:10

Sergey Vlasov