Gewusst wie: Zugreifen auf Eigenschaften von Dateien für bestimmte Projekttypen
Sie können die Dateieigenschaften von Dateien im Projekt in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio manuell festlegen und untersuchen. Um Dateieigenschaften zu untersuchen, öffnen Sie in Visual Studio ein Projekt und klicken im Projektmappen-Explorer mit der rechten Maustaste auf eine Projektdatei, z. B. filename.cs. Wählen Sie im Kontextmenü den Befehl Eigenschaften aus, um das Dialogfeld Eigenschaften anzuzeigen. Im Dialogfeld Eigenschaften werden die Dateieigenschaften angezeigt, die Sie manuell für die ausgewählte Datei festlegen können.
Der VSLangProj80-Namespace bietet eine Möglichkeit zum programmgesteuerten Zugriff auf Dateieigenschaften in Visual C#- oder Visual Basic-Projekten. Insbesondere definiert FileProperties2 eine Vielzahl von Eigenschaften zum Steuern von und Zugreifen auf Dateiinformationen. Einige der in FileProperties2 definierten Eigenschaften sind nicht für jeden Dateityp gültig. So ist die DateCreated-Eigenschaft beispielsweise für Codedateien definiert, nicht aber für andere Projektdateien.
Um auf eine bestimmte FileProperties2-Eigenschaft zuzugreifen, müssen Sie den zugehörigen Eigenschaftennamen als Zeichenfolge an EnvDTE.Property.Properties.Item(object index) übergeben, wie im nachfolgenden Codebeispiel dargestellt.
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");
Dieser Code greift auf die FileName-Eigenschaft einer Datei in einem Visual C#- oder Visual Basic-Projekt zu.
Faktisch stellen die in FileProperties2 definierten Eigenschaften eine Verweisliste verfügbarer Eigenschaften für Dateien dar, auf die als Projekteigenschaftenelemente für Visual C#- oder Visual Basic-Projekte zugegriffen werden kann.
In den nachfolgenden Schritten wird der programmgesteuerte Zugriff auf die Dateieigenschaften in einem Visual Studio-Add-In ausführlich erläutert.
Tipp
Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Bei der Entwicklung dieser Verfahren war die Option Allgemeine Entwicklungseinstellungen aktiviert. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.
So greifen Sie auf die Eigenschaften von Dateien für einen bestimmten Projekttyp zu
Erstellen Sie in Visual C# ein Visual Studio-Add-In-Projekt.
Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie VSLangProj, VSLangProj2 und VSLangProj80 aus, und klicken Sie dann auf OK.
Fügen Sie am Anfang der Datei Connect.cs die folgenden using-Anweisungen ein.
using VSLangProj; using VSLangProj2; using VSLangProj80;
Fügen Sie der OnConnection-Methode den folgenden Methodenaufruf hinzu.
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VSProjectFileProps2(_applicationObject); }
Fügen Sie direkt unterhalb der OnConnection-Methode die VSProjectFileProps2-Methode ein.
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); } }
VSProjectFileProps2 listet die FileName-Eigenschaft für jede Datei im Projekt auf. Die Methode ermittelt dann, ob die Datei die Erweiterung .cs oder .vb aufweist. Wenn ja, werden auch der Filesize-Eigenschaftswert und der DateCreated-Eigenschaftswert angezeigt.
Im Beispielabschnitt wird der vollständige Code aufgeführt.
Erstellen Sie das Add-In, indem Sie im Menü Erstellen auf Projektmappe erstellen klicken.
Öffnen Sie in der Visual Studio-IDE ein Visual C#- oder Visual Basic-Projekt.
Klicken Sie im Menü Extras auf Add-In-Manager, und wählen Sie im Dialogfeld Add-In-Manager das Add-In aus. Klicken Sie auf OK, um das Add-In auszuführen.
Beispiel
Das folgende Beispiel zeigt ein einfaches Visual Studio-Add-In, das den Zugriff auf die Eigenschaften einer Datei in einem bestimmten Projekttyp mithilfe der Visual Studio-Automatisierung veranschaulicht.
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
Kompilieren des Codes
Um diesen Code zu kompilieren, erstellen Sie ein neues Visual Studio-Add-In-Projekt und ersetzen den Code der OnConnection-Methode durch den Code im Beispiel. Informationen zum Ausführen eines Add-Ins finden Sie unter Gewusst wie: Steuern von Add-Ins mit dem Add-In-Manager.