Como acessar propriedades de configuração para 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, a configuração de compilação e a configuração de depuração.
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 listadas em CSharpProjectConfigurationProperties4, VBProjectConfigurationProperties4 e ProjectConfigurationProperties3 permitem controlar as propriedades do projeto encontradas nos painéis Compilar (Compilar para projetos Visual Basic) e Depurar de Propriedades da página Propriedades da configuração atualmente ativa.
Você também pode optar por uma configuração diferente, não atualmente ativa, acessando o objeto de ConfigurationManager . Para obter mais informações, consulte Como criar configurações de compilação de solução e de projeto.
As propriedades de configuração para projetos do Visual C# são definidas em CSharpProjectConfigurationProperties4. As propriedades de ErrorReport e de LanguageVersion são específicas somente para projetos de Visual C#. O restante das propriedades em CSharpProjectConfigurationProperties3 é o mesmo que as propriedades em ProjectConfigurationProperties3.
Essas propriedades de configuração não podem ser acessadas diretamente convertendo um objeto Property em um objeto CSharpProjectConfigurationProperties3 ou ProjectConfigurationProperties3. Em vez disso, você pode acessar essas propriedades passando o nome do item de configuração como uma cadeia de caracteres como mostrado abaixo:
EnvDTE.Project proj;
EnvDTE.Configuration config;
EnvDTE.Properties configProps;
EnvDTE.Property prop;
proj = DTE.Solution.Projects.Item(1);
config = proj.ConfigurationManager.ActiveConfiguration;
configProps = config.Properties;
prop = configProps.Item("EnableSQLServerDebugging")
Esse código acessa a propriedade CSharpProjectConfigurationProperties3.EnableSQLServerDebugging ou ProjectConfigurationProperties3.EnableSQLServerDebugging, dependendo se a variável proj define um projeto do Visual C# ou do Visual Basic.
Com efeito, as propriedades de configuração definidas em CSharpProjectConfigurationProperties3 ou em ProjectConfigurationProperties3 são uma lista de referência de propriedades disponíveis de configuração para projetos específicos que podem ser acessados como itens de propriedade de configuração do projeto através da coleção Properties .
As etapas abaixo detalham como programaticamente acessar as propriedades de configuração da configuração ativa atualmente 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 de configuração para um tipo específico de projeto
Crie um projeto de suplemento do Visual Studio usando Visual C# e selecionando a opção para carregar o suplemento quando o Visual Studio for iniciado.
No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione System.Windows.Forms, VSLangProj, VSLangProj2, e VSLangProj80, e clique em OK.
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;
Adicione a seguinte chamada de função à função OnConnection.
_applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VSProjectConfigProperties(_applicationObject);
Adicione o método VSProjectConfigProperties diretamente abaixo do método OnConnection.
public void VSProjectConfigProperties(DTE2 dte) { try { // Open a Visual C# or Visual Basic project // before running this add-in. Project project; Configuration config; Properties configProps; Property prop; project = _applicationObject.Solution.Projects.Item(1); config = project.ConfigurationManager.ActiveConfiguration; configProps = config.Properties; prop = configProps.Item("PlatformTarget"); MessageBox.Show("The platform target for this project is: " + prop.Value.ToString()); prop = configProps.Item("WarningLevel"); MessageBox.Show ("The warning level for this project is set to: " + prop.Value.ToString()); MessageBox.Show("Changing the warning level to 3..."); prop.Value = "3"; MessageBox.Show ("The warning level for this project is now set to: " + prop.Value.ToString()); if (project.Kind == PrjKind.prjKindCSharpProject) { MessageBox.Show("The project is a Visual C# Project"); prop = configProps.Item("LanguageVersion"); MessageBox.Show("The language version value is : " + prop.Value.ToString()); MessageBox.Show("Setting the language version to ISO-1"); prop.Value = "ISO-1"; MessageBox.Show("The language version value is now: " + prop.Value.ToString()); } } catch(Exception ex) { MessageBox.Show(ex.Message); } }
O método VSProjectConfigProperties obtém e exibe o valor da propriedade PlatformTarget. Define e obtém a propriedade WarningLevel. Se o projeto for um projeto do Visual C#, o método VSProjectConfigProperties definirá e obterá a propriedade LanguageVersion.
Compile o suplemento clicando em Compilar Solução no menu Compilação.
Abra um projeto do Visual C# ou do Visual Basic na IDE do Visual Studio.
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.
Validar que o nível do aviso foi alterado clicando em Propriedades no menu Projeto e em seguida, selecionando a guia Compilação na janela Propriedades.
O campo Nível de aviso reflete a alteração que você fez de forma programática.
Para validar a configuração de versão da linguagem para um projeto Visual C#, no painel Compilar da janela Propriedades, clique em Avançado.
O campo Versão da Linguagem da caixa de diálogo Configurações Avançadas de Compilação reflete a alteração que o suplemento fez.
Exemplo
O exemplo a seguir é um suplemento básico do Visual Studio que demonstra como acessar propriedades para um tipo específico de projeto usando a automação no Visual Studio.
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;
public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
VSProjectConfigProperties(_applicationObject);
}
public void VSProjectConfigProperties(DTE2 dte)
{
try
{
// Open a Visual C# or Visual Basic project
// before running this add-in.
Project project;
Configuration config;
Properties configProps;
Property prop;
project = _applicationObject.Solution.Projects.Item(1);
config = project.ConfigurationManager.ActiveConfiguration;
configProps = config.Properties;
prop = configProps.Item("PlatformTarget");
MessageBox.Show("The platform target for this project is:
" + prop.Value.ToString());
prop = configProps.Item("WarningLevel");
MessageBox.Show
("The warning level for this project is set to: "
+ prop.Value.ToString());
MessageBox.Show("Changing the warning level to 3...");
prop.Value = "3";
MessageBox.Show
("The warning level for this project is now set to: "
+ prop.Value.ToString());
if (project.Kind == PrjKind.prjKindCSharpProject)
{
MessageBox.Show("The project is a Visual C# Project");
prop = configProps.Item("LanguageVersion");
MessageBox.Show("The language version value is : "
+ prop.Value.ToString());
MessageBox.Show("Setting the language version to ISO-1");
prop.Value = "ISO-1";
MessageBox.Show("The language version 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
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)
VSProjectConfigProperties(_applicationObject)
End Sub
Sub VSProjectConfigProperties(ByVal dte As DTE2)
' Open a Visual C# or Visual Basic project
' before running this add-in.
Try
Dim project As Project
Dim config As Configuration
Dim configProps As Properties
Dim prop As [Property]
project = _applicationObject.Solution.Projects.Item(1)
config = project.ConfigurationManager.ActiveConfiguration
configProps = config.Properties
prop = configProps.Item("PlatformTarget")
MsgBox("The platform target for this project is: " _
& prop.Value.ToString())
prop = configProps.Item("WarningLevel")
MsgBox("The warning level for this project is set to: " _
& prop.Value.ToString())
MsgBox("Changing the warning level to 3...")
prop.Value = "3"
MsgBox("The warning level for this project is now set to: " _
& prop.Value.ToString())
If project.Kind = PrjKind.prjKindCSharpProject Then
MsgBox("The project is a Visual C# Project")
prop = configProps.Item("LanguageVersion")
MsgBox("The language version value is : " _
& prop.Value.ToString())
MsgBox("Setting the language version to ISO-1")
prop.Value = "ISO-1"
MsgBox("The language version 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.