Procedura: accedere alle proprietà di configurazione per tipi di progetto specifici
Aggiornamento: novembre 2007
Il modello di automazione generale di Visual Studio fornisce l'insieme Properties che è possibile utilizzare per accedere agli insiemi Properties di qualsiasi tipo di progetto Visual Studio. Tra l'altro, le proprietà dei progetti consentono di controllare le impostazioni di protezione, 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, JSharpProjectConfigurationProperties3 e ProjectConfigurationProperties3consentono di controllare le proprietà presenti nei riquadri Genera (Compila per i progetti Visual Basic) e ProprietàDebug della pagina Proprietà della configurazione attiva.
È anche possibile scegliere una configurazione non attiva accedendo all'oggetto ConfigurationManager. Per ulteriori informazioni, vedere Procedura: creare configurazioni della build di soluzioni e progetti.
Le proprietà di configurazione per i progetti Visual C# e Visual J# sono definite rispettivamente negli oggetti CSharpProjectConfigurationProperties4 e JSharpProjectConfigurationProperties3. Le proprietà CodePage, DisableLangXtns, JCPA e SecureScoping sono specifiche solo dei progetti Visual J#. Le proprietà ErrorReport e LanguageVersion sono specifiche solo dei progetti Visual C#. Il resto delle proprietà in CSharpProjectConfigurationProperties3 e JSharpProjectConfigurationProperties3 corrispondono alle proprietà in ProjectConfigurationProperties3.
Non è possibile accedere direttamente alle proprietà di configurazione eseguendo direttamente il cast di un oggetto Property su un oggetto CSharpProjectConfigurationProperties3, JSharpProjectConfigurationProperties3 o 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, JSharpProjectConfigurationProperties3.EnableSQLServerDebugging o ProjectConfigurationProperties3.EnableSQLServerDebugging a seconda che la variabile proj definisca un progetto Visual C#, Visual J# o Visual Basic.
Di fatto, le proprietà di configurazione definite in CSharpProjectConfigurationProperties3, JSharpProjectConfigurationProperties3 o ProjectConfigurationProperties3 rappresentano un elenco di riferimento di proprietà di configurazione disponibili per progetti specifici a cui è possibile accedere come elementi delle proprietà di configurazione del progetto attraverso l'insieme Properties.
Di seguito viene illustrato come accedere a livello di codice alle proprietà della configurazione attiva in un componente aggiuntivo di Visual Studio.
![]() |
---|
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi rispetto a quelli descritti nella Guida in linea a seconda delle impostazioni attive o dell'edizione del programma. Queste routine 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
Creare un progetto di componente aggiuntivo Visual Studio utilizzando Visual C#.
Scegliere Aggiungi riferimento dal menu Progetto, selezionare la scheda .NET, quindi System.Windows.Forms, VSLangProj, VSLangProj2 e VSLangProj80 e infine scegliere OK.
Aggiungere le istruzioni using riportate di seguito all'inizio del file Connect.cs.
using VSLangProj; using VSLangProj2; using VSLangProj80; using VSLangProj90; using System.Windows.Forms;
Aggiungere la chiamata riportata di seguito al metodo OnConnection.
_applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VSProjectConfigProperties(_applicationObject);
Aggiungere il metodo VSProjectConfigProperties immediatamente sotto il metodo OnConnection.
public void VSProjectConfigProperties(DTE2 dte) { try { // Open a Visual C#, Visual J#, 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()); } if (project.Kind == PrjKind2.prjKindVJSharpProject) { MessageBox.Show("The project is a Visual J# Project"); prop = configProps.Item("CodePage"); MessageBox.Show("The code page value is : " + prop.Value.ToString()); MessageBox.Show ("Setting the code page value to my code page"); prop.Value = "my code page"; MessageBox.Show("The code page 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. Nel caso di un progetto Visual J#, invece, il metodo imposta e ottiene la proprietà CodePage.
Generare il componente aggiuntivo scegliendo Genera soluzione dal menu Genera.
Aprire un progetto Visual C#, Visual J# o Visual Basic nell'IDE di Visual Studio.
Scegliere Gestione componenti aggiuntivi dal menu Strumenti e selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi. Scegliere OK per eseguire il componente aggiuntivo.
Confermare che il livello di avviso è stato modificato scegliendo Proprietà dal menu Progetto e selezionando la scheda Genera nella finestra Proprietà.
Il campo Livello avvisi riflette la modifica effettuata a livello di codice.
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 generazione avanzate riflette la modifica effettuata dal componente aggiuntivo.
Per confermare la modifica all'impostazione della tabella codici di un progetto Visual J#, scegliere Avanzate nel riquadro Compilazione della finestra Proprietà.
Il campo Tabella codici della finestra di dialogo Impostazioni di generazione avanzate riflette la modifica a questa proprietà.
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 System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
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#, Visual J#, 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());
}
if (project.Kind == PrjKind2.prjKindVJSharpProject)
{
MessageBox.Show("The project is a Visual J# Project");
prop = configProps.Item("CodePage");
MessageBox.Show("The code page value is : "
+ prop.Value.ToString());
MessageBox.Show
("Setting the code page value to my code page");
prop.Value = "my code page";
MessageBox.Show("The code page 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)
VSProjectConfigProperties(_applicationObject)
End Sub
Sub VSProjectConfigProperties(ByVal dte As DTE2)
' Open a Visual C#, Visual J#, 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
If project.Kind = PrjKind2.prjKindVJSharpProject Then
MsgBox("The project is a Visual J# Project")
prop = configProps.Item("CodePage")
MsgBox("The code page value is : " _
& prop.Value.ToString())
MsgBox("Setting the code page value to my code page")
prop.Value = "my code page"
MsgBox("The code page 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 su come eseguire un componente aggiuntivo, vedere Procedura: controllare i componenti aggiuntivi con Gestione componenti aggiuntivi.