Gewusst wie: Zugreifen auf Eigenschaften bestimmter Projekttypen

Das allgemeine Automatisierungsmodell von Visual Studio enthält die Properties-Auflistung, mit der der Zugriff auf die Properties-Auflistungen eines beliebigen Visual Studio-Projekttyps möglich ist.Projekteigenschaften ermöglichen Ihnen u. a. das Steuern von Sicherheitseinstellungen sowie des Assemblynamens.

Um Projekteigenschaften manuell festzulegen und zu untersuchen, öffnen Sie in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio ein Projekt.Klicken Sie im Menü Projekt auf Eigenschaften.Das Dialogfeld Eigenschaften enthält mehrere Registerkarten, und in den einzelnen Bereichen werden die Eigenschaften aufgeführt, mit denen das Verhalten von Projekten definiert und gesteuert wird.Das Automatisierungsmodell ermöglicht Ihnen die programmgesteuerte Steuerung dieser Einstellungen.Insbesondere mithilfe der Eigenschaften in ProjectProperties3 können Sie die Projekteigenschaften in den Fensterbereichen Anwendung, Ressourcen, Einstellungen, Verweispfade und Signierung auf der Eigenschaftenseite für Visual C#-Projekte steuern.Mithilfe der in VBProjectProperties3 definierten Eigenschaften können Sie die Eigenschafteneinstellungen von Visual Basic-Projekten steuern. Die Einstellungen finden Sie in den Fensterbereichen Anwendung, Ressourcen, Einstellungen, Verweise und Signierung auf der Eigenschaftenseite.

Eigenschaften für Visual C#-Projekte werden in ProjectProperties3 definiert.Eigenschaften für Visual Basic-Projekte werden in VBProjectProperties3 definiert.Die MyApplication-Eigenschaft und die MyType-Eigenschaft sind für Visual Basic-Projekte spezifisch.Bei den verbleibenden Eigenschaften in VBProjectProperties3 handelt es sich um die gleichen Eigenschaften wie in ProjectProperties3.

Auf diese Eigenschaften kann nicht direkt durch das Umwandeln eines Properties-Objekts in ein ProjectProperties3-Objekt oder ein VBProjectProperties3-Objekt zugegriffen werden.Stattdessen erfolgt der Zugriff auf diese Eigenschaften über die Properties-Auflistung, indem der Name der Eigenschaft für den bestimmten Projekttyp als eine Zeichenfolge zum Festlegen von Property angegeben wird.So können Sie beispielsweise mithilfe des Codes EnvDTE.Property prop = EnvDTE.Properties.Item("ApplicationIcon"); auf die ApplicationIcon-Eigenschaft zugreifen.

Faktisch sind die in ProjectProperties3 und VBProjectProperties3 definierten Eigenschaften eine Verweisliste verfügbarer Eigenschaften für bestimmte Projekte, auf die als Projekteigenschaftenelemente zugegriffen werden kann.

In den nachfolgenden Schritten wird der programmgesteuerte Zugriff auf diese Eigenschaften in einem Visual Studio-Add-In ausführlich erläutert.

HinweisHinweis

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.Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern.Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

So greifen Sie auf die Eigenschaften für einen bestimmten Projekttyp zu

  1. Erstellen Sie in Visual C# ein Visual Studio-Add-In-Projekt.

  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie VSLangProj, VSLangProj2, VSLangProj80 und dann System.Windows.Forms aus, und klicken Sie auf OK.

  3. Fügen Sie am Anfang der Datei Connect.cs die folgenden using-Anweisungen ein.

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    using VSLangProj90;
    using VSLangProj100;
    using System.Windows.Forms;
    
  4. Fügen Sie der OnConnection-Methode nach der Zeile, die die _addInstance-Methode festlegt, wie unten dargestellt einen Aufruf einer neuen Methode mit dem Namen VSProjectProperies hinzu.

    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectProperties(_applicationObject);
    
  5. Fügen Sie die VSProjectProperties-Methode direkt unterhalb der OnConnection-Methode hinzu.

    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);
        }
    }
    

    Die VSProjectProperties-Methode legt die AssemblyName-Eigenschaft fest und ruft diese ab, indem sie die Eigenschaft als Property-Elementzeichenfolge an die Properties-Auflistung übergibt.Wenn es sich bei dem Projekt um ein Visual Basic-Projekt handelt, legt die VSProjectProperties-Methode auch die MyType-Eigenschaft fest und ruft diese ab.

    Im Beispielabschnitt wird der vollständige Code aufgeführt.

  6. Erstellen Sie das Add-In, indem Sie im Menü Erstellen auf Projektmappe erstellen klicken.

  7. Öffnen Sie in der Visual Studio-IDE ein Visual C#- oder Visual Basic-Projekt.

  8. 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.

  9. Überprüfen Sie, ob der Assemblyname geändert wurde, indem Sie im Menü Projekt auf Eigenschaften klicken und dann im Eigenschaftenfenster die Registerkarte Anwendung auswählen.

    Die programmgesteuerte Änderung hat sich auf den Wert im Feld Assemblyname ausgewirkt.

Beispiel

Das folgende Beispiel zeigt ein einfaches Visual Studio-Add-In, das den Zugriff auf projekttypspezifische Eigenschaften mithilfe der Visual Studio-Automatisierung veranschaulicht.

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

Kompilieren des Codes

Um den 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.

Siehe auch

Weitere Ressourcen

Project Properties

Zugreifen auf projekttypspezifische Projekteigenschaften, Projektelementeigenschaften und Konfigurationseigenschaften