有没有办法以编程方式从C#中实现的VSPackage中打开NuGet Package Manager GUI?
这个想法是允许用户快速从ErrorTask
条目导航到可以解决特定问题的包管理器。
答案 0 :(得分:1)
有几种不同的方法可以做到这一点。
您将需要使用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。
并非所有工具窗口guid都已发布,但您通常可以使用Paul Harrington的“Component Diagnostics”扩展来解决这些问题。安装扩展后,您可以通过“帮助”|“组件诊断”菜单项调用它。在“组件诊断”对话框的左侧窗格中,您需要选择“选择和UIContext”类别。在对话框的右侧窗格中,您需要选择“实时上下文”选项卡。
选择后,切换回VS IDE,打开Package Manager Console工具窗口,然后在其中单击以确保它已激活。您应该会在“实时上下文”窗格下看到工具窗口的上下文显示。在大多数情况下,UI上下文与唯一标识工具窗口的guid值相同。
一旦识别出guid,就可以使用IVsUIShell.FindToolWindowEx方法(如果需要的话创建它)并检索它的IVsWindowFrame接口。使用IVsWindowFrame interface,您可以显示并激活工具窗口。