Creación de una extensión con un VSPackage

En este tutorial se muestra cómo crear un proyecto VSIX y agregar un elemento de proyecto de VSPackage. Usaremos VSPackage para obtener el servicio shell de interfaz de usuario para mostrar un cuadro de mensaje.

Creación de un VSPackage

  1. Cree un proyecto VSIX denominado FirstPackage. Puede encontrar la plantilla de proyecto VSIX en el cuadro de diálogo Nuevo proyecto buscando "vsix".

  2. Cuando se abra el proyecto, agregue una plantilla de elemento de paquete de Visual Studio denominada FirstPackage. En el Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto y seleccione Agregar>Nuevo elemento. En el cuadro de diálogo Agregar nuevo elemento, vaya a Visual C#>Extensibilidad y seleccione Paquete de Visual Studio. En el campo Nombre de la parte inferior de la ventana, cambie el nombre del archivo de comando a FirstPackage.cs.

  3. Compile la solución y comience la depuración.

    Aparece la instancia experimental de Visual Studio. Para obtener más información sobre la instancia experimental, vea La instancia experimental.

  4. En la instancia experimental, abra la ventana Extensiones de herramientas>y Novedades. Debería ver la extensión FirstPackage aquí. (Si abre Extensiones y Novedades en la instancia de trabajo de Visual Studio, no verá FirstPackage).

Carga del VSPackage

En este momento, la extensión no se carga porque no hay nada que haga que se cargue. Por lo general, puede cargar una extensión cuando interactúe con su interfaz de usuario (haciendo clic en un comando de menú, abriendo una ventana de herramientas) o especificando que VSPackage debe cargarse en un contexto de interfaz de usuario específico. Para obtener más información sobre cómo cargar VSPackages y contextos de interfaz de usuario, consulte Carga de VSPackages. Para este procedimiento, le mostraremos cómo cargar un VSPackage cuando se abra una solución.

  1. Abra el archivo FirstPackage.cs . Busque la declaración de la FirstPackage clase . Reemplace los atributos existentes por los atributos siguientes:

    [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. Vamos a agregar un mensaje que nos permita saber que VSPackage se ha cargado. Usamos el método de Initialize() VSPackage para hacerlo, ya que solo puede obtener servicios de Visual Studio después de que se haya siteado VSPackage. (Para obtener más información sobre cómo obtener servicios, consulte Cómo: Obtener un servicio). Reemplace el Initialize() método de FirstPackage por código que obtiene el SVsUIShell servicio, obtiene la IVsUIShell interfaz y llama a su ShowMessageBox método.

    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. Compile la solución y comience la depuración. Aparece la instancia experimental.

  4. Abra una solución en la instancia experimental. Debería ver un cuadro de mensaje que indica First Package Inside Initialize().