Procedura: accedere alle proprietà di tipi di progetto specifici
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 sicurezza, il nome dell'assembly e così via.
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à in ProjectProperties3 consentono di controllare le proprietà dei progetti contenute nei riquadri delle finestre Applicazione, Risorse, Impostazioni, Percorsi riferimento e Firma della pagina Proprietà per progetti Visual C#. Le proprietà definite in VBProjectProperties3 consentono di controllare le impostazioni delle proprietà dei progetti Visual Basic, contenute nei riquadri finestre Applicazione, Risorse, Impostazioni, Riferimenti e Firma della pagina Proprietà.
Le proprietà per i progetti Visual C# sono definite in ProjectProperties3. Le proprietà per i progetti Visual Basic sono definite in VBProjectProperties3. Le proprietà MyApplication e MyType sono specifiche solo dei progetti Visual Basic. Le altre proprietà dell'oggetto VBProjectProperties3 corrispondono alle proprietà dell'oggetto ProjectProperties3.
Non è possibile accedere direttamente a queste proprietà eseguendo il cast di un oggetto Properties su un oggetto ProjectProperties3 o VBProjectProperties3. È invece possibile accedere a queste proprietà attraverso l'insieme Properties fornendo come stringa il nome della proprietà per il tipo di progetto specifico per specificare l'oggetto Property. Il codice EnvDTE.Property prop = EnvDTE.Properties.Item("ApplicationIcon");, ad esempio, consente di accedere alla proprietà ApplicationIcon.
Di fatto, le proprietà definite negli oggetti ProjectProperties3 e VBProjectProperties3 rappresentano un elenco di riferimento di proprietà disponibili per progetti specifici a cui è possibile accedere come elementi delle proprietà del progetto.
Di seguito viene illustrato come accedere a queste proprietà a livello di codice 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 Gestione delle impostazioni.
Per accedere alle proprietà 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 VSLangProj, VSLangProj2, VSLangProj80 e Sytem.Windows.Forms e fare clic su OK.
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;
Aggiungere una chiamata al nuovo metodo denominata VSProjectProperies al metodo OnConnection dopo la riga che imposta il metodo _addInstance, come illustrato di seguito.
_applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VSProjectProperties(_applicationObject);
Aggiungere il metodo VSProjectProperties immediatamente sotto il metodo 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); } }
Il metodo VSProjectProperties imposta e ottiene la proprietà AssemblyName passandola come stringa dell'elemento Property nell'insieme Properties. Nel caso di un progetto Visual Basic il metodo VSProjectProperties imposta e ottiene la proprietà MyType.
Nella sezione relativa agli esempi è elencato il codice completo.
Compilare il componente aggiuntivo scegliendo Compila soluzione dal menu Compila.
Aprire un progetto di Visual C# o Visual Basic nell'IDE di Visual Studio.
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.
Confermare la modifica del nome dell'assembly scegliendo Proprietà dal menu Progetto e selezionando la scheda Applicazione nella finestra Proprietà.
Il campo Nome assembly riflette la modifica effettuata a livello di codice.
Esempio
Nell'esempio riportato di seguito viene illustrato un componente aggiuntivo di Visual Studio di base per l'accesso a proprietà specifiche dei tipi di progetto utilizzando l'automazione in 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
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 tramite Gestione componenti aggiuntivi.