如何以编程方式从VSPackage打开NuGet Package Manager GUI

时间:2017-05-10 19:50:04

标签: c# nuget vspackage

有没有办法以编程方式从C#中实现的VSPackage中打开NuGet Package Manager GUI?

这个想法是允许用户快速从ErrorTask条目导航到可以解决特定问题的包管理器。

1 个答案:

答案 0 :(得分:1)

有几种不同的方法可以做到这一点。

  1. 确定用于显示工具窗口的命令,并使用IVsUIShell.PostExecCommand有效模拟选择Tools | Nuget Package Manager | Package Manager控制台菜单项。
  2. 您将需要使用EnableVSIPLogging注册表值来标识唯一标识菜单命令的guid:id对,如以下博客条目中所述:

    Using EnableVSIPLogging to identify menus and commands with VS 2005 + SP1

    提示,考虑安装Mads Kristensen的“Extensibility Tools”扩展,而不是弄乱注册表,在IDE的“视图”菜单下添加“启用VSIP日志”菜单项。打开它并重新启动VS后,您可以按住SHIFT + CTRL键,然后单击“程序包管理器控制台”菜单项,该菜单项将显示一个诊断对话框,其中包含您刚刚单击的命令的guid和id。

    1. 识别工具窗口,并使用IVsUIShell.FindToolWindowEx检索Package Manager控制台工具窗口,并以编程方式显示/激活它。
    2. 并非所有工具窗口guid都已发布,但您通常可以使用Paul Harrington的“Component Diagnostics”扩展来解决这些问题。安装扩展后,您可以通过“帮助”|“组件诊断”菜单项调用它。在“组件诊断”对话框的左侧窗格中,您需要选择“选择和UIContext”类别。在对话框的右侧窗格中,您需要选择“实时上下文”选项卡。

      选择后,切换回VS IDE,打开Package Manager Console工具窗口,然后在其中单击以确保它已激活。您应该会在“实时上下文”窗格下看到工具窗口的上下文显示。在大多数情况下,UI上下文与唯一标识工具窗口的guid值相同。

      一旦识别出guid,就可以使用IVsUIShell.FindToolWindowEx方法(如果需要的话创建它)并检索它的IVsWindowFrame接口。使用IVsWindowFrame interface,您可以显示并激活工具窗口。