使用 VSPackage 创建扩展
本演练演示如何创建 VSIX 项目并添加 VSPackage 项目项。 我们将使用 VSPackage 获取 UI Shell 服务,以显示消息框。
创建 VSPackage
创建名为 FirstPackage 的 VSIX 项目。 可以通过搜索“vsix”在“新建项目”对话框中找到 VSIX 项目模板。
项目打开时,添加名为 FirstPackage 的 Visual Studio 包项模板。 在“解决方案资源管理器”中,右键单击项目节点并选择“添加”>“新建项”。 在“添加新项”对话框中,转到 Visual C#>Extensibility 并选择 Visual Studio 包。 在 窗口底部的“名称 ”字段中,将命令文件名更改为 FirstPackage.cs。
生成项目并启动调试。
此时会显示 Visual Studio 的实验实例。 有关实验实例的详细信息,请参阅 实验实例。
在实验实例中,打开“工具>扩展”和“汇报”窗口。 应在此处看到 FirstPackage 扩展。 (如果打开)Visual Studio 工作实例中的扩展和汇报,看不到 FirstPackage)。
加载 VSPackage
此时,扩展不会加载,因为没有任何导致它加载的原因。 与 UI 交互时,通常可以加载扩展(单击菜单命令、打开工具窗口),或者指定 VSPackage 应在特定的 UI 上下文中加载。 有关加载 VSPackage 和 UI 上下文的详细信息,请参阅加载 VSPackage。 对于此过程,我们将介绍如何在打开解决方案时加载 VSPackage。
打开 FirstPackage.cs 文件。 查找类的
FirstPackage
声明。 将现有属性替换为以下属性:[PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideAutoLoad(UIContextGuids80.SolutionExists)] [Guid(FirstPackage.PackageGuidString)] public sealed class FirstPackage : Package
让我们添加一条消息,告知我们 VSPackage 已加载。 我们使用 VSPackage 的方法执行此操作,因为只能在 VSPackage
Initialize()
网站之后获取 Visual Studio 服务。 (有关获取服务的详细信息,请参阅如何:获取服务。将Initialize()
FirstPackage
方法替换为获取SVsUIShell服务、获取IVsUIShell接口并调用其ShowMessageBox方法的代码。protected override void Initialize() { base.Initialize(); IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); Guid clsid = Guid.Empty; int result; Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox( 0, ref clsid, "FirstPackage", string.Format(CultureInfo.CurrentCulture, "Inside {0}.Initialize()", this.GetType().FullName), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result)); }
生成项目并启动调试。 这将显示实验实例。
在实验实例中打开解决方案。 应会看到一个消息框,其中显示 “初始化中的第一个包”>。