Compartir a través de


Cómo: Obtener acceso a propiedades de tipos de proyectos concretos

Actualización: noviembre 2007

El modelo de automatización general de Visual Studio proporciona la colección Properties, que se puede utilizar para tener acceso a las colecciones Properties de cualquier tipo de proyecto de Visual Studio. Entre otras cosas, las propiedades de proyecto permiten controlar la configuración de seguridad, el nombre de ensamblado, etc.

Para establecer y examinar manualmente las propiedades del proyecto, abra un proyecto en el entorno de desarrollo integrado (IDE) de Visual Studio. En el menú Proyecto, haga clic en Propiedades. La ventana Propiedades tiene varias fichas y cada panel muestra las propiedades que se utilizan para definir y controlar el comportamiento de los proyectos. El modelo de automatización permite controlar esta configuración mediante programación. Específicamente, las propiedades de ProjectProperties3 permiten controlar las propiedades de proyecto que se encuentran en los paneles de ventana Aplicación, Recursos, Configuración, Rutas de acceso de referencia y Firma de la página Propiedades de los proyectos de Visual C# y Visual J#. Las propiedades definidas en VBProjectProperties3 permiten controlar la configuración de las propiedades de los proyectos de Visual Basic, que se encuentran en los paneles de ventana Aplicación, Recursos, Configuración, Referencias y Firma de la página Propiedades.

Las propiedades de los proyectos de Visual C# y Visual J# se definen en ProjectProperties3. Las propiedades de los proyectos de Visual Basic se definen en VBProjectProperties3. Las propiedades MyApplication y MyType sólo son específicas de los proyectos de Visual Basic. Las demás propiedades de VBProjectProperties3 son iguales a las propiedades de ProjectProperties3.

A estas propiedades no se puede tener acceso convirtiendo directamente un objeto Properties en un objeto ProjectProperties3 o VBProjectProperties3. En lugar de ello, a estas propiedades se debe tener acceso mediante la colección Properties, proporcionando el nombre de la propiedad del tipo de proyecto específico como una cadena, para precisar el objeto Property. Por ejemplo, el código, EnvDTE.Property prop = EnvDTE.Properties.Item("ApplicationIcon"); permite tener acceso a la propiedad ApplicationIcon.

De hecho, las propiedades definidas en ProjectProperties3 y VBProjectProperties3 son una lista de referencia de las propiedades de proyectos específicos disponibles, a las que se puede tener acceso como elementos de propiedad de proyecto.

Los siguientes pasos explican cómo tener acceso mediante programación a estas propiedades en un complemento de Visual Studio.

Nota:

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Estos procedimientos se desarrollaron con la Configuración general de desarrollo activa. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.

Para tener acceso a las propiedades de un tipo específico de proyecto

  1. Cree un proyecto de complemento de Visual Studio mediante Visual C#.

  2. En el menú Proyecto, haga clic en Agregar referencia, luego en la ficha .NET, seleccione VSLangProj, VSLangProj2 y VSLangProj80, y haga clic en Aceptar.

  3. Agregue las siguientes instrucciones using al principio del archivo Connect.cs.

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    
  4. Agregue la llamada siguiente al método OnConnection.

    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectProperties(_applicationObject);
    
  5. Agregue el método VSProjectProperties inmediatamente después del método OnConnection.

    public void VSProjectProperties(DTE2 dte)
    {
        try
        {
            // Open a Visual C#, Visual J#, or Visual Basic project
            // before running this add-in.
            Project project;
            project = _applicationObject.Solution.Projects.Item(1);
            Property prop;
            prop = project.Properties.Item("AssemblyName");
            MessageBox.Show("The assembly name is: " 
    + prop.Value .ToString());
            prop.Value = "MyTestAssembly";
            MessageBox.Show("The assembly name is now: " 
    + prop.Value.ToString());
            // If the project is a Visual Basic project, set
            // the MyApplication property.
            if (project.Kind == PrjKind.prjKindVBProject)
            {
                MessageBox.Show("The project is a Visual 
    Basic Project");
                prop = project.Properties.Item("MyType");
                MessageBox.Show("The MyType value is: " 
    + prop.Value.ToString());
                prop.Value = "Class Library";
                MessageBox.Show("The MyType value is now: " 
    + prop.Value.ToString());
            }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    

    El método VSProjectProperties establece y obtiene la propiedad AssemblyName pasándola como una cadena de elementos Property a la colección Properties. Si el proyecto es de Visual Basic, el método VSProjectProperties también establece y obtiene la propiedad MyType.

    La sección de ejemplo muestra el código completo.

  6. Haga clic en Generar solución en el menú Generar para generar el complemento.

  7. Abra un proyecto de Visual C#, Visual J# o Visual Basic en el IDE de Visual Studio.

  8. En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.

  9. Para comprobar que el nombre del ensamblado ha cambiado, haga clic en Propiedades en el menú Proyecto y, a continuación, seleccione la ficha Aplicación en la ventana Propiedades.

    El campo Nombre del ensamblado refleja el cambio realizado mediante programación.

Ejemplo

En el siguiente ejemplo de complemento básico de Visual Studio, se muestra cómo tener acceso a las propiedades de tipos de proyecto específicos, utilizando la automatización de Visual Studio.

using System;
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
namespace myAddin
    public void OnConnection(object application, 
ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        VSProjectProperties(_applicationObject);
    }
    public void VSProjectProperties(DTE2 dte)
    {
        try
        {
            // Open a Visual C#, Visual J#, or Visual Basic project
            // before running this add-in.
            Project project;
            project = _applicationObject.Solution.Projects.Item(1);
            Property prop;
            prop = project.Properties.Item("AssemblyName");
            MessageBox.Show("The assembly name is: " 
+ prop.Value .ToString());
            prop.Value = "MyTestAssembly";
            MessageBox.Show("The assembly name is now: " 
+ prop.Value.ToString());
            // If the project is a Visual Basic project, set
            // the MyApplication property.
            if (project.Kind == PrjKind.prjKindVBProject)
            {
                MessageBox.Show
("The project is a Visual Basic Project");
                prop = project.Properties.Item("MyType");
                MessageBox.Show("The MyType value is: " 
+ prop.Value.ToString());
                prop.Value = "Class Library";
                MessageBox.Show("The MyType value is now: " 
+ prop.Value.ToString());
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80

    Public Sub OnConnection(ByVal application As Object, _
 ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _
 ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        VSProjectProperties(_applicationObject)
    End Sub
    Sub VSProjectProperties(ByVal dte As DTE2)
        ' Open a Visual C#, Visual J#, or Visual Basic project
        ' before running this add-in.
        Try
            Dim project As Project
            project = _applicationObject.Solution.Projects.Item(1)
            Dim prop As [Property]
            prop = project.Properties.Item("AssemblyName")
            MsgBox("The assembly name is: "  _
            & prop.Value.ToString())
            prop.Value = "MyTestAssembly"
            MsgBox("The assembly name is now: "  _
            & prop.Value.ToString())
            ' If the project is a Visual Basic project, set
            ' the MyApplication property.
            If project.Kind = PrjKind.prjKindVBProject Then
                MsgBox("The project is a Visual Basic Project")
                prop = project.Properties.Item("MyType")
                MsgBox("The MyType value is: "  _
                & prop.Value.ToString())
                prop.Value = "Class Library"
                MsgBox("The MyType value is now: "  _
                & prop.Value.ToString())
            End If
        Catch ex As System.Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

Compilar el código

Para compilar este código, cree un nuevo proyecto de complemento de Visual Studio y reemplace el código del método OnConnection por el código del ejemplo. Para obtener información sobre cómo ejecutar un complemento, vea Cómo: Controlar complementos con el Administrador de complementos.

Vea también

Conceptos

Propiedades del proyecto

Otros recursos

Obtener acceso a un proyecto de tipo específico, un elemento de proyecto y las propiedades de configuración