Procedura: accedere alle proprietà dei file per tipi di progetto specifici
È possibile impostare ed esaminare manualmente le proprietà dei file del progetto nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio. Per esaminare le proprietà dei file, aprire un progetto in Visual Studio e da Esplora soluzioni fare clic con il pulsante destro del mouse su un file di progetto, ad esempio filename.cs. Dal menu di scelta rapida selezionare Proprietà per visualizzare la finestra di dialogo Proprietà. Nella finestra di dialogo Proprietà vengono visualizzate le proprietà dei file che è possibile impostare manualmente per il file scelto.
Lo spazio dei nomi VSLangProj80 offre un modo per accedere a livello di codice alle proprietà dei file nei progetti di Visual C# o di Visual Basic. In particolare, FileProperties2 definisce un insieme di proprietà per il controllo e l'accesso di informazioni sui file. Alcune proprietà definite in FileProperties2 non sono valide per ogni tipo di file. La proprietà DateCreated, ad esempio, viene definita per i file di codice, ma non per altri file di progetto.
Per accedere a una proprietà FileProperties2 specifica, è necessario passarne il nome come stringa a EnvDTE.Property.Properties.Item(object index), come illustrato nell'esempio di codice seguente.
Project project;
ProjectItems projItems;
ProjectItem projItem;
Property prop;
project = _applicationObject.Solution.Projects.Item(1);
projItems = project.ProjectItems;
projItem = projItems.Item(1);
prop = projItem.Properties.Item("FileName");
Il codice consente di accedere alla proprietà FileName di un file in un progetto di Visual C# o di Visual Basic.
Di fatto, le proprietà definite in FileProperties2 rappresentano un elenco di riferimento di proprietà disponibili per file cui è possibile accedere come elementi delle proprietà di progetto per i progetti di Visual C# o di Visual Basic.
Di seguito viene illustrato come accedere alle proprietà dei file 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à dei file 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 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;
Aggiungere la chiamata al metodo OnConnection riportata di seguito.
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VSProjectFileProps2(_applicationObject); }
Aggiungere il metodo VSProjectFileProps2 immediatamente sotto il metodo OnConnection.
public void VSProjectFileProps2(DTE2 dte) { try { // Open a Visual C# or Visual Basic project // before running this add-in. Project project; ProjectItems projItems; ProjectItem projItem; Property prop; project = _applicationObject.Solution.Projects.Item(1); projItems = project.ProjectItems; for(int i = 1 ; i <= projItems.Count; i++ ) { projItem = projItems.Item(i); prop = projItem.Properties.Item("FileName"); MessageBox.Show("The file name of item " + i + " is: " + prop.Value.ToString()); if (prop.Value.ToString().Contains(".cs") || prop.Value.ToString().Contains(".vb")) { prop = projItem.Properties.Item("FileSize"); MessageBox.Show("The file size of item " + i + " is: " + prop.Value.ToString()); prop = projItem.Properties.Item("DateCreated"); MessageBox.Show("The creation date of item " + i + " is: " + prop.Value.ToString()); } } } catch(Exception ex) { MessageBox.Show(ex.Message); } }
In VSProjectFileProps2 la proprietà FileName è elencata per ogni file del progetto. Il metodo determina quindi se il file presenta un'estensione cs o vb. In caso affermativo, vengono anche visualizzati i valori delle proprietà Filesize e DateCreated.
Nella sezione relativa all'esempio è 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.
Esempio
Nell'esempio riportato di seguito viene illustrato un componente aggiuntivo di Visual Studio di base per l'accesso alle proprietà di un file di un tipo specifico di progetto utilizzando l'automazione di 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;
VSProjectFileProps2(_applicationObject);
}
public void VSProjectFileProps2(DTE2 dte)
{
try
{
// Open a Visual C# or Visual Basic project
// before running this add-in.
Project project;
ProjectItems projItems;
ProjectItem projItem;
Property prop;
project = _applicationObject.Solution.Projects.Item(1);
projItems = project.ProjectItems;
for(int i = 1 ; i <= projItems.Count; i++ )
{
projItem = projItems.Item(i);
prop = projItem.Properties.Item("FileName");
MessageBox.Show("The file name of item " + i + " is: "
+ prop.Value.ToString());
if (prop.Value.ToString().Contains(".cs")
|| prop.Value.ToString().Contains(".vb"))
{
prop = projItem.Properties.Item("FileSize");
MessageBox.Show("The file size of item " + i + " is: "
+ prop.Value.ToString());
prop = projItem.Properties.Item("DateCreated");
MessageBox.Show("The creation date of item " + i
+ " is: " + 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)
VSProjectFileProperties2(_applicationObject)
End Sub
Sub VSProjectFileProperties2(ByVal dte As DTE2)
' Open a Visual C# or Visual Basic project
' before running this add-in.
Try
Dim project As Project
Dim projItems As ProjectItems
Dim projItem As ProjectItem
Dim prop As [Property]
project = _applicationObject.Solution.Projects.Item(1)
projItems = project.ProjectItems
For i As Integer = 1 To projItems.Count
projItem = projItems.Item(i)
prop = projItem.Properties.Item("FileName")
MsgBox("The file name of item " & i & " is: " _
& prop.Value.ToString())
If (prop.Value.ToString().Contains(".cs") _
Or prop.Value.ToString().Contains(".vb")) Then
prop = projItem.Properties.Item("FileSize")
MsgBox("The file size of item " & i & " is: " _
& prop.Value.ToString())
prop = projItem.Properties.Item("DateCreated")
MsgBox("The creation date of item " & i & " is: " _
& prop.Value.ToString())
End If
Next i
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.