使用 VSPackage 创建扩展

本演练演示如何创建 VSIX 项目并添加 VSPackage 项目项。 我们将使用 VSPackage 获取 UI Shell 服务,以显示消息框。

创建 VSPackage

  1. 创建名为 FirstPackageVSIX 项目。 可以通过搜索“vsix”在“新建项目”对话框中找到 VSIX 项目模板

  2. 项目打开时,添加名为 FirstPackage 的 Visual Studio 包项模板。 在“解决方案资源管理器”中,右键单击项目节点并选择“添加”>“新建项”。 在“添加新项”对话框中,转到 Visual C#>Extensibility 并选择 Visual Studio 包。窗口底部的“名称 ”字段中,将命令文件名更改为 FirstPackage.cs

  3. 生成项目并启动调试。

    此时会显示 Visual Studio 的实验实例。 有关实验实例的详细信息,请参阅 实验实例

  4. 在实验实例中,打开“工具>扩展”和“汇报”窗口。 应在此处看到 FirstPackage 扩展。 (如果打开)Visual Studio 工作实例中的扩展和汇报,看不到 FirstPackage)。

加载 VSPackage

此时,扩展不会加载,因为没有任何导致它加载的原因。 与 UI 交互时,通常可以加载扩展(单击菜单命令、打开工具窗口),或者指定 VSPackage 应在特定的 UI 上下文中加载。 有关加载 VSPackage 和 UI 上下文的详细信息,请参阅加载 VSPackage。 对于此过程,我们将介绍如何在打开解决方案时加载 VSPackage。

  1. 打开 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
    
  2. 让我们添加一条消息,告知我们 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));
    }
    
  3. 生成项目并启动调试。 这将显示实验实例。

  4. 在实验实例中打开解决方案。 应会看到一个消息框,其中显示 “初始化中的第一个包”>。