Compartir a través de


Tutorial: Crear una característica de proyecto simple que se desencadene al cargar los proyectos

Puede crear una característica de proyecto para realizar acciones personalizadas cuando se produzcan acciones relacionadas con el proyecto. En este tutorial creará una característica de proyecto denominada SampleProjectFeature que muestra un cuadro de diálogo cuando se carga un proyecto de base de datos. Podría modificar este ejemplo para realizar acciones al cargar el proyecto de base de datos.

En este tutorial llevará a cabo las siguientes tareas principales:

  • Crear un paquete de Visual Studio

  • Definir una característica de proyecto

  • Probar su característica de proyecto

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

  • Debe tener instalado Visual Studio 2010 Professional, Visual Studio 2010 Premium o Visual Studio 2010 Ultimate.

  • Debe tener un proyecto de base de datos.

  • También debe tener instalado Visual Studio 2010 SDK en su equipo. Para descargar este kit, vea esta página en el sitio web de Microsoft: Visual Studio 2010 SDK.

Nota

Este tutorial está dirigido a los usuarios que ya están familiarizados con las características de base de datos de Visual Studio. También se espera que esté familiarizado con los conceptos básicos de Visual Studio, como, por ejemplo, la forma de crear una biblioteca de clases y de usar el editor de código para agregar código a una clase.

Crear un paquete de Visual Studio

Para iniciar Visual Studio Integration Package Wizard (Asistente para paquetes de integración de Visual Studio)

  1. En el menú Archivo, elija Nuevo y haga clic en Proyecto.

  2. En la lista de Plantillas instaladas, expanda el nodo Otros tipos de proyectos y haga clic en el nodo Extensibilidad.

  3. En el recuadro de detalles, haga clic en Paquete de Visual Studio.

    Nota importanteImportante

    Si no instaló Visual Studio 2010 SDK, el tipo de proyecto Visual Studio Integration Package (Paquete de integración de Visual Studio) no está disponible.

  4. En Nombre, escriba SampleProjectFeature.

  5. Haga clic en Aceptar.

    Aparece Visual Studio Integration Package Wizard (Asistente para paquetes de integración de Visual Studio).

    A continuación, utilice el asistente para configurar el proyecto que desea crear.

Para utilizar Visual Studio Integration Package Wizard (Asistente para paquetes de integración de Visual Studio) para crear un proyecto

  1. Haga clic en Siguiente.

  2. En Choose Language (Elegir lenguaje), haga clic en Visual C#.

    Nota

    También podría crear el paquete mediante Visual Basic o Visual C++. Este tutorial solo muestra el código de ejemplo para Visual Basic y Visual C#.

  3. En Obtain keys for assembly signing (Obtener claves para firmar el ensamblado), haga clic en Generate a new key file to sign the assembly (Generar un nuevo archivo de claves para firmar el ensamblado).

  4. Haga clic en Siguiente.

  5. En Company name (Nombre de la compañía), escriba MyCompany.

  6. En VSPackage name (Nombre de VSPackage), escriba SampleProjectFeature.

  7. (Opcional) Puede proporcionar un número de versión concreto.

  8. (Opcional) Puede personalizar el icono utilizado por su paquete.

  9. (Opcional) Puede proporcionar información adicional sobre su paquete en Detailed Information (Información detallada).

  10. Haga clic en Siguiente.

  11. Active la casilla Menu Command (Comando de menú).

  12. Compruebe que las casillas Tool Window (Ventana de herramientas) y Custom Editor (Editor personalizado) están desactivadas.

  13. Haga clic en Siguiente.

  14. En Command Name (Nombre de comando), escriba Alternar diálogos de proyecto cargados.

  15. En Command ID (Identificador de comando), escriba cmdidEnableDialogs.

  16. Haga clic en Siguiente.

  17. Desactive las casillas Integration Test Project (Proyecto de prueba de integración) y Unit Test Project (Proyecto de prueba unitaria).

    Nota

    Si estuviera creando un paquete real para usarlo en su organización, debería plantearse la creación de pruebas para su paquete a fin de comprobar que funciona correctamente.

  18. Haga clic en Finalizar.

    Se creará un proyecto de Visual Studio Integration Package (Paquete de integración de Visual Studio) que aparecerá en el Explorador de soluciones.

    A continuación, personalizará el código del paquete para definir su característica de proyecto de base de datos.

Definir una característica de proyecto

Para modificar la definición del paquete para definir una característica de proyecto de base de datos, debe actualizar la definición del paquete y, a continuación, agregar la clase SampleProjectFeature.

Para actualizar la definición del paquete

  1. En el Explorador de soluciones, haga doble clic en SampleProjectFeaturePackage.cs para abrirlo en el editor de código.

  2. En el editor de código, busque el método MenuItemCallback.

  3. Sustituya la definición del método por el código siguiente:

            private void MenuItemCallback(object sender, EventArgs e)
            {
                SampleProjectFeature.EnableDialogs = !SampleProjectFeature.EnableDialogs;
            }
    

    Nota

    Aparecerá un error en la Lista de errores porque no ha definido todavía la clase SampleProjectFeature y el método EnableDialogs.

  4. En el menú Archivo, haga clic en Guardar SampleProjectFeaturePackage.cs.

    A continuación, defina la clase de característica de proyecto.

Para definir la clase SampleProjectFeature

  1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto SampleProjectFeature, elija Agregar y, a continuación, haga clic en Clase.

    Aparecerá el cuadro de diálogo Agregar nuevo elemento con la plantilla de clase ya resaltada.

  2. En Nombre, escriba SampleProjectFeature.cs.

  3. Haga clic en Agregar.

    La nueva clase se agrega a su proyecto y el editor de código aparece y muestra la definición de clase.

  4. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto y, a continuación, haga clic en Agregar referencia.

    Aparecerá el cuadro de diálogo Agregar referencia.

  5. Haga clic en la ficha .NET.

  6. En la lista de componentes, resalte las siguientes referencias y haga clic en Aceptar:

    • Microsoft.Data.Schema

    • Microsoft.VisualStudio.Data.Schema.Package

  7. En el editor de código, agregue las siguientes instrucciones using a la definición de clase:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.Data.Schema.Extensibility;
    using Microsoft.Data.Schema;
    using Microsoft.VisualStudio.Data.Schema.Package.Project;
    using Microsoft.VisualStudio.Shell.Interop;
    using System.Globalization;
    
  8. Modifique la definición de clase para especificar la clase base y proporcionar el atributo que especifica con qué proveedores de esquemas de base de datos es compatible esta característica. Para este tutorial, el ejemplo es compatible con todos los proveedores de esquemas de base de datos.

        [DatabaseSchemaProviderCompatibility(typeof(DatabaseSchemaProvider))]
        class SampleProjectFeature : IDatabaseProjectFeature
        {
        }
    

    Las interfaces, tipos y métodos clave son DatabaseSchemaProviderCompatibilityAttribute, DatabaseSchemaProvider e IDatabaseProjectFeature.

  9. Agregue un par de propiedades a su clase:

            public static bool EnableDialogs { get; set; }
            private IDatabaseProjectNode ProjectNode { get; set; }
    

    El comando que puede habilitar o deshabilitar esta característica de proyecto utiliza la primera propiedad. Una interfaz que merece la pena destacar es IDatabaseProjectNode.

  10. Agregue el siguiente constructor a su clase:

            static SampleProjectFeature()
            {
                EnableDialogs = true;
            }
    

    El constructor inicializa la propiedad EnableDialogs.

  11. Agregue el método Initialize a su clase:

            public void Initialize(IDatabaseProjectNode projectNode)
            {
                ProjectNode = projectNode;
    
                // Hook up to a few events
                ProjectNode.ProjectLoaded += delegate
                {
                    ShowDialog("In ProjectLoaded Event");
                };
            }
    

    El método Initialize identifica el proyecto al que se aplica la característica y, a continuación, se prepara para inspeccionar el evento ProjectLoaded.

  12. Por último, agregue el método ShowDialog que mostrará un cuadro de diálogo cuando se produzca un evento ProjectLoaded, si la característica está habilitada:

            void ShowDialog(string msg)
            {
                if (!SampleProjectFeature.EnableDialogs)
                    return;
    
                // Show a Message Box to indicate that we were here
                IVsUIShell uiShell = (IVsUIShell)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SVsUIShell));
                Guid clsid = Guid.Empty;
                int result;
                Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(
                           0,
                           ref clsid,
                           "Simple Project Feature",
                           msg,
                           string.Empty,
                           0,
                           OLEMSGBUTTON.OLEMSGBUTTON_OK,
                           OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                           OLEMSGICON.OLEMSGICON_INFO,
                           0,        // false
                           out result));
            }
    

    Si el usuario ha desactivado la característica utilizando el comando de menú, el método vuelve. De lo contrario, este método muestra un cuadro de diálogo. En su propia característica de proyecto, en lugar de mostrar un cuadro de diálogo, podría realizar procesamiento adicional.

  13. En el menú Archivo, haga clic en Guardar SampleProjectFeature.cs.

A continuación, compilará el proyecto.

Para compilar el proyecto

  • En el menú Generar, haga clic en Generar solución.

A continuación, recopilará la información del ensamblado generada en el proyecto, incluidas la versión, referencia cultural y PublicKeyToken.

Para recopilar información del ensamblado

  1. Abra el menú Inicio, elija Microsoft Visual Studio 2010, Visual Studio Tools y, a continuación, haga clic en Símbolo del sistema de Visual Studio (2010).

  2. Navegue a la carpeta que contenga su ensamblado integrado (SampleProjectFeature.dll).

  3. Escriba la línea de comandos siguiente:

    SN.EXE -T SampleProjectFeature.dll

  4. Anote el token de clave pública. Se usará en el procedimiento siguiente.

A continuación, creará un archivo XML usando la información del ensamblado que recopiló en el procedimiento anterior.

Para crear el archivo XML

  1. En el Explorador de soluciones, seleccione el proyecto SampleProjectFeature.

  2. En el menú Proyecto, seleccione Agregar nuevo elemento.

  3. En el recuadro Plantillas, busque y seleccione el elemento Archivo XML.

  4. En el cuadro de texto Nombre, escriba SampleProjectFeature.Extensions.xml y haga clic en el botón Agregar.

    Se agregará el archivo SampleProjectFeature.Extensions.xml al proyecto en el Explorador de soluciones.

  5. Abra el archivo SampleProjectFeature.Extensions.xml y actualícelo para que coincida con el XML siguiente. Reemplace el PublicKeyToken que recuperó en el procedimiento anterior.

    <?xml version="1.0" encoding="utf-8"?>
    <extensions assembly=""
                version="1" xmlns="urn:Microsoft.Data.Schema.Extensions"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="urn:Microsoft.Data.Schema.Extensions Microsoft.Data.Schema.Extensions.xsd">
    
      <extension type=" MyCompany.SampleProjectFeature.SampleProjectFeature" assembly="SampleProjectFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nnnnnnnnnnnnnnnn" enabled="true"/>
    </extensions>
    
  6. Haga clic en la opción Guardar del menú Archivo.

Después, modifique las propiedades del archivo Extensions.xml para incluirlo en vsixmanifest.

Para incluir SampleProductFeature.Extensions.xml en vsixmanifest

  1. En el Explorador de soluciones, haga clic en SampleProjectFeature.Extensions.xml.

  2. En la ventana Propiedades, cambie la propiedad Acción de compilación a Contenido.

  3. Cambie la propiedad Incluir en VSIX a True.

  4. En el menú Archivo, haga clic en Guardar todo.

  5. En el menú Compilar, haga clic en Compilar SampleProjectFeature.

    Se actualizará el archivo vsixmanifest. Ya está en condiciones de probar la característica del proyecto.

Probar su característica de proyecto

Para probar su característica de proyecto, primero debe compilarlo y, a continuación, puede presionar F5 para iniciar la compilación experimental de Visual Studio.

Para compilar y probar su característica de proyecto de base de datos

  1. En el menú Proyecto, haga clic en Compilar.

    Su proyecto debería compilarse correctamente.

  2. Presione F5 para ejecutar su paquete en la compilación experimental de Visual Studio.

    Aparece una instancia experimental de Visual Studio. En el menú Herramientas, aparece el comando Alternar diálogos de proyecto cargados.

  3. En el menú Archivo, elija Abrir y, a continuación, haga clic en Proyecto o solución.

  4. Vaya al proyecto de base de datos (.dbproj) que desea abrir y, a continuación, haga clic en Abrir.

    Cuando se carga su proyecto de base de datos, aparece un cuadro de diálogo con el mensaje "Simple Project Feature In ProjectLoaded Event".

    En este punto, puede personalizar su característica de proyecto para agregar más capacidades.

Pasos siguientes

Si copia la característica que creó en este tutorial como un punto de inicio para su propio trabajo, debe hacer lo siguiente:

  • Asignar un nombre único a su extensión.

  • Asignar un GUID único a su extensión.

Al crear un nuevo paquete mediante el Asistente para paquetes de integración de Visual Studio, se crea un nuevo GUID.

Antes de que el paquete esté disponible en instancias normales de Visual Studio, debe registrarlo. Para obtener más información sobre VSPackages, vea:

Vea también

Tareas

How to: Troubleshoot VSPackages

Conceptos

Extender las características de base de datos de Visual Studio

Información general acerca de los proyectos de base de datos y servidor

Otros recursos

Crear características personalizadas para los proyectos de base de datos

Historial de cambios

Fecha

Historial

Motivo

Julio de 2010

Se realizó una pequeña corrección en el archivo Extensions.xml para resolver un problema identificado por los clientes.

Comentarios de los clientes.