Condividi tramite


Procedura: accedere alle proprietà di configurazione per tipi di progetto specifici

Il modello di automazione generale di Visual Studio fornisce la raccolta Properties che è possibile utilizzare per accedere alle raccolte Properties di qualsiasi tipo di progetto Visual Studio.Tra l'altro, le proprietà dei progetti consentono di controllare le impostazioni di sicurezza, la configurazione della build e la configurazione di debug.

Per impostare ed esaminare manualmente le proprietà dei progetti, aprire un progetto nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio.Scegliere Proprietà dal menu Progetto.La finestra Proprietà è composta da numerose schede e ogni riquadro contiene proprietà utilizzate per definire e controllare il comportamento dei progetti.Il modello di automazione consente di controllare queste impostazioni a livello di codice.In particolare, le proprietà elencate in CSharpProjectConfigurationProperties4, VBProjectConfigurationProperties4 e ProjectConfigurationProperties3 consentono di controllare le proprietà di progetto presenti nei riquadri delle finestre Compila (Compilazione per i progetti di Visual Basic) e Proprietà didebug della pagina Proprietà della configurazione attualmente attiva.

È anche possibile scegliere una configurazione non attiva accedendo all'oggetto ConfigurationManager.Per ulteriori informazioni, vedere Procedura: creare configurazioni di compilazione di soluzioni e progetti.

Le proprietà di configurazione per i progetti di Visual C# sono definite in CSharpProjectConfigurationProperties4.Le proprietà ErrorReport e LanguageVersion sono specifiche solo dei progetti di Visual C#.Le restanti proprietà dell'oggetto CSharpProjectConfigurationProperties3 corrispondono alle proprietà dell'oggetto ProjectConfigurationProperties3.

Non è possibile accedere alle proprietà di configurazione eseguendo direttamente il cast di un oggetto Property su un oggetto CSharpProjectConfigurationProperties3 oppure ProjectConfigurationProperties3.In alternativa, è possibile accedere a queste proprietà passando come stringa il nome dell'elemento di configurazione, come illustrato di seguito:

    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")

Il codice consente di accedere alla proprietà CSharpProjectConfigurationProperties3.EnableSQLServerDebugging oppure ProjectConfigurationProperties3.EnableSQLServerDebugging a seconda che la variabile proj definisca un progetto di Visual C# o di Visual Basic.

Di fatto, le proprietà di configurazione definite in CSharpProjectConfigurationProperties3 o ProjectConfigurationProperties3 rappresentano un elenco di riferimento di proprietà di configurazione disponibili per progetti specifici cui è possibile accedere come elementi delle proprietà di configurazione del progetto attraverso la raccolta Properties.

Di seguito viene illustrato come accedere a livello di codice alle proprietà della configurazione attiva in un componente aggiuntivo di Visual Studio.

[!NOTA]

È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma.Queste procedure sono state sviluppate con le Impostazioni generali per lo sviluppo attive.Per modificare le impostazioni, scegliere Importa/esporta impostazioni dal menu Strumenti.Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Per accedere alle proprietà di configurazione per un tipo specifico di progetto

  1. Creare un progetto di componente aggiuntivo di Visual Studio tramite Visual C# e selezionando l'opzione per caricare il componente aggiuntivo all'avvio di Visual Studio.

  2. Scegliere Aggiungi riferimento dal menu Progetto, selezionare la scheda .NET, quindi System.Windows.Forms, VSLangProj, VSLangProj2 e VSLangProj80 e infine scegliere OK.

  3. Aggiungere le istruzioni using riportate di seguito all'inizio del file Connect.cs.

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    using VSLangProj90;
    using VSLangProj100;
    using System.Windows.Forms;
    
  4. Aggiungere la chiamata riportata di seguito al metodo OnConnection.

    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectConfigProperties(_applicationObject);
    
  5. Aggiungere il metodo VSProjectConfigProperties immediatamente sotto il metodo 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);
        }
    }
    

    Il metodo VSProjectConfigProperties ottiene e visualizza il valore della proprietà PlatformTarget.Imposta e ottiene la proprietà WarningLevel.Nel caso di un progetto Visual C#, il metodo VSProjectConfigProperties imposta e ottiene la proprietà LanguageVersion.

  6. Compilare il componente aggiuntivo scegliendo Compila soluzione dal menu Compila.

  7. Aprire un progetto di Visual C# o Visual Basic nell'IDE di Visual Studio.

  8. Scegliere Gestione componenti aggiuntivi dal menu Strumenti, quindi selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi.Scegliere OK per eseguire il componente aggiuntivo.

  9. Confermare che il livello di avviso è stato modificato scegliendo Proprietà dal menu Progetto e selezionando la scheda Compila nella finestra Proprietà.

    Il campo Livello avvisi riflette la modifica effettuata a livello di codice.

  10. Per confermare l'impostazione della versione del linguaggio per un progetto Visual C#, scegliere Avanzate nel riquadro Compilazione della finestra Proprietà.

    Il campo Versione linguaggio della finestra di dialogo Impostazioni di compilazione avanzate riflette la modifica effettuata dal componente aggiuntivo.

Esempio

Nell'esempio riportato di seguito viene illustrato l’utilizzo di un componente aggiuntivo di Visual Studio di base per accedere a proprietà per un tipo specifico di progetto utilizzando l'automazione in 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

Compilazione del codice

Per compilare il codice, creare un nuovo progetto di componente aggiuntivo Visual Studio e sostituire il codice del metodo OnConnection con il codice dell'esempio.Per informazioni sull'esecuzione di un componente aggiuntivo, vedere Procedura: controllare i componenti aggiuntivi tramite Gestione componenti aggiuntivi.

Vedere anche

Altre risorse

Project Properties

Accesso a un tipo di progetto specifico, a un elemento di progetto e alle proprietà di configurazione di un progetto