Visual Studio扩展性:每个UI上下文的Package.cs的ProvideAutoLoad

Tin*_*ler 7 c# visual-studio visual-studio-extensions visual-studio-2013

我的目标是创建一个“ Visual Studio可扩展性”,将“ Npm install”上下文菜单项添加到package.json文件。

到目前为止,如果我打开一个解决方案,这将非常有用,因为我已经将该[ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids.SolutionExists)]属性添加到Package类。

但是,如果我打开网站(文件->打开->网站...),它将无法正常工作。您有什么主意,如何为每个UI上下文自动加载Package.cs?

编辑:进一步调查后的更多信息:如果将网站另存为解决方案,则会调用“初始化”方法。但是未调用package.json的MenuItem的BeforeQueryStatus。解决方案结构如下所示:

-Solution
 -project
  -package.json
Run Code Online (Sandbox Code Playgroud)

如果我直接将package.json添加到解决方案中,则会显示上下文菜单项。结构体:

-Solution
 -Solution Items
  -package.json
 -project
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 5

将以下代码添加到包定义中:

[ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasMultipleProjects_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasSingleProject_string)]
Run Code Online (Sandbox Code Playgroud)

您的软件包应在所有情况下加载。


Ser*_*sov 1

您可以添加带有NoSolution值的第二个 ProvideAutoLoad 属性,以在所有上下文中加载您的包。