Compartilhar via


Como acessar propriedades de tipos de projetos específicos

O modelo de automação geral do Visual Studio fornece a coleção Properties que pode ser usada para acessar as coleções Properties de qualquer tipo de projeto do Visual Studio. Entre outros coisas, as propriedades do projeto permitem que você controle as configurações de segurança, o nome do assembly, e assim por diante.

Para definir e examinar manualmente as propriedades do projeto, abra um projeto no Visual Studio ambiente de desenvolvimento integrado (IDE). No menu Projeto, clique em Propriedades. A janela Propriedades tem várias guias e cada painel lista as propriedades que são usadas para definir e controlar o comportamento de projetos. O modelo de automação permite que você controle essas configurações de modo programático. Especificamente, as propriedades em ProjectProperties3 permitem controlar as propriedades do projeto encontradas nos painéis de janelas Aplicativo, Recursos, Configurações, Caminhos de referência e Assinatura da página Propriedades de projetos Visual C#. As propriedades definidas em VBProjectProperties3 permitem controlar as configurações de propriedades de projetos do Visual Basic, encontradas nos painéis das janelas Aplicativo, Recursos, Configurações, Referências e Assinatura da página Propriedades.

As propriedades para projetos de Visual C# são definidas em ProjectProperties3. As propriedades para projetos de Visual Basic são definidas em VBProjectProperties3. As propriedades MyApplication e MyType são específicas somente de projetos do Visual Basic. O restante das propriedades em VBProjectProperties3 é o mesmo que as propriedades em ProjectProperties3.

Essas propriedades não podem ser acessadas convertendo diretamente um objeto Properties em um objeto ProjectProperties3 ou VBProjectProperties3. Em vez disso, essas propriedades devem ser acessadas por meio da coleção Properties fornecendo o nome da propriedade para o tipo específico de projeto como uma cadeia de caracteres para especificar Property. Por exemplo, o código EnvDTE.Property prop = EnvDTE.Properties.Item("ApplicationIcon"); permite que você acesse a propriedade ApplicationIcon.

Com efeito, as propriedades definidas em ProjectProperties3 e em VBProjectProperties3 são uma lista de referência de propriedades disponíveis para projetos específicos que podem ser acessados como itens de propriedade de projeto.

As etapas abaixo detalham como programaticamente acessar essas propriedades em um suplemento Visual Studio.

Dica

Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário Visual Studio nas instruções a seguir.A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos.Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio.

Para acessar propriedades para um tipo específico de projeto

  1. Crie um projeto de suplemento do Visual Studio usando o Visual C#.

  2. No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione VSLangProj, VSLangProj2, and VSLangProj80 e Sytem.Windows.Forms e clique em OK.

  3. Adicione as seguintes instruções de uso na parte superior do arquivo Connect.cs.

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    using VSLangProj90;
    using VSLangProj100;
    using System.Windows.Forms;
    
  4. Adicionar uma chamada a um novo método chamado VSProjectProperies para o método OnConnection após a linha que define o método _addInstance como mostrado.

    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectProperties(_applicationObject);
    
  5. Adicione o método VSProjectProperties diretamente abaixo do método OnConnection.

    public void VSProjectProperties(DTE2 dte)
    {
        try
        {
            // Open a Visual C# 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 == "{F184B08F-C81C-45F6-A5F6-5ABD9991F28F}")
    
            {
                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);
        }
    }
    

    O método VSProjectProperties define e obtém a propriedade AssemblyName passando a como uma cadeia de caracteres de item Property para coleção Properties. Se o projeto for um projeto do Visual Basic, o método VSProjectProperties também definirá e obterá a propriedade MyType.

    A seção de exemplo lista o código completo.

  6. Compile o suplemento clicando em Compilar Solução no menu Compilação.

  7. Abra um projeto do Visual C# ou do Visual Basic na IDE do Visual Studio.

  8. No menu de Ferramentas , clique Gerenciador de Suplementos, e selecione o suplemento da caixa de diálogo Gerenciador de Suplementos . Clique OK para executar o suplemento.

  9. Validar que o nome do assembly foi alterado clicando em Propriedades no menu Projeto e em seguida, selecionando a guia Aplicativo na janela Propriedades.

    O campo Nome do assembly reflete a alteração que você fez programaticamente.

Exemplo

O exemplo a seguir é um suplemento básico do Visual Studio que demonstra como acessar propriedades que são específicas para os tipos de projeto usando a automação no Visual Studio.

using System;
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using EnvDTE90a;
using EnvDTE100;
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using VSLangProj90;
using VSLangProj100;
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# 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 EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Imports VSLangProj100

    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# 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

Compilando o código

Para compilar este código, crie um novo projeto do suplemento Visual Studio e substitua o código do método OnConnection com o código no exemplo. Para obter informações sobre como executar um suplemento, consulte Como controlar suplementos usando o Gerenciador de Suplementos.

Consulte também

Outros recursos

Project Properties

Acessando propriedades de projetos, itens de projetos e configuração para tipos de projetos específicos