Porady: uzyskiwanie dostępu do właściwości specyficznych typów projektu

Model automatyzacji ogólnej Visual Studio zapewnia kolekcję Properties, która może być używana do uzyskiwania dostępu do kolekcji Properties wszelkich typów projektu Visual Studio.Właściwości projektu umożliwiają między innymi kontrolowanie ustawień zabezpieczeń, nazwy zestawu i tak dalej.

Aby ręcznie ustawić i zbadać właściwości projektu, otwórz projekt w zintegrowanym środowisku programistycznym (IDE) Visual Studio.W menu Projekt, kliknij Właściwości.Okno Właściwości ma wiele kart i w każde okienko jest wyświetla właściwości, które są używane do definiowania i kontrolowania zachowania projektów.Model automatyzacji pozwala na programistyczne kontrolowanie tych ustawień.Właściwości w ProjectProperties3 służą do kontrolowania właściwości projektu znalezionych w oknach Aplikacja, Zasoby, Ustawienia, Ścieżki odwołania, i Podpisywanie strony Właściwości dla projektów Visual C#.Właściwości określone w VBProjectProperties3 służą do kontrolowania ustawień projektów Visual Basic, znalezione w oknach Aplikacja, Zasoby, Ustawienia, Odwołania, i Podpisywanie strony Właściwości.

Właściwości dla projektów w języku Visual C# są zdefiniowane w interfejsie ProjectProperties3.Właściwości dla projektów Visual Basic są zdefiniowane w VBProjectProperties3.Właściwości MyApplication i MyType są właściwe wyłącznie dla projektów Visual Basic.Pozostałe właściwości w VBProjectProperties3 są takie same jak właściwości w ProjectProperties3.

Te właściwości są niedostępne przez bezpośrednie rzutowanie obiektu Properties na obiekt ProjectProperties3 lub VBProjectProperties3.Zamiast tego właściwości te muszą być dostępne za pośrednictwem kolekcji Properties przez podanie nazwy właściwości dla określonego typu projektu jako ciągu, aby określić obiekt Property.Na przykład kod EnvDTE.Property prop = EnvDTE.Properties.Item("ApplicationIcon"); pozwala uzyskać dostęp do właściwości ApplicationIcon.

W praktyce właściwości zdefiniowane we właściwościach ProjectProperties3 i VBProjectProperties3 są listą odwołań do dostępnych właściwości określonych projektów, które są dostępne jako elementy właściwości projektu.

Poniższe kroki szczegółowo opisują jak programowo uzyskać dostęp do tych właściwości w dodatku Visual Studio.

[!UWAGA]

Komputer może polazać inne nazwy lub lokalizacje dla niektórych elementów interfejsu użytkownika Visual Studio w dalszych instrukcjach.Te elementy są determinowane przez numer edycji Twojego programu Visual Studio oraz Twoje ustawienia.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Aby uzyskać dostęp do właściwości dla określonego typu projektu

  1. Utwórz projekt dodatku Visual Studio korzystając z Visual C#.

  2. W menu Projekt kliknij polecenie Dodaj odwołanie, kliknij kartę .NET, zaznacz pozycje VSLangProj, VSLangProj2 i VSLangProj80 i Sytem.Windows.Forms, a następnie kliknij przycisk OK.

  3. Dodaj następujące za pomocą instrukcji na górze pliku Connect.cs.

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    using VSLangProj90;
    using VSLangProj100;
    using System.Windows.Forms;
    
  4. Dodać wywołanie do nowej metody o nazwie VSProjectProperies do metody OnConnection po wierszu, który ustawia metodę _addInstance, jak pokazano:

    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectProperties(_applicationObject);
    
  5. Dodaj metodę VSProjectProperties bezpośrednio poniżej metody 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);
        }
    }
    

    Metoda VSProjectProperties ustawia i pobiera właściwość AssemblyName przez przekazanie jej jako ciągu elementu Property dla kolekcji Properties.Jeżeli projekt jest w języku Visual Basic, metoda VSProjectProperties również ustawia i pobiera właściwość MyType.

    Sekcja przykład ukazuje kompletny kod.

  6. Tworzenie dodatku przez kliknięcie w menu Kompilacja opcji Kompiluj rozwiązanie.

  7. Otwórz Visual C# lub projekt Visual Basic w Visual Studio IDE.

  8. W menu Narzędzia, kliknij Menedżer dodatkówi wybierz swój dodatek z okna dialogowego Menedżer dodatków.Kliknij OK, aby uruchomić dodatek.

  9. Potwierdź, że nazwa zestawu została zmieniona klikając Właściwości w menu Projekt, a następnie wybierając kartę Aplikacja w oknie Właściwości.

    Pole Nazwa zestawu odzwierciedla zmianę dokonaną w sposób programowy.

Przykład

Poniższy przykład to podstawowy dodatek Visual Studio, który demonstruje sposób uzyskiwania dostępu do właściwości charakterystycznych dla typów projektu za pomocą automatyzacji w 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

Kompilowanie kodu

Aby skompilować ten kod, utwórz nowy projekt dodatku Visual Studio i zastąp kod metody OnConnection kodem w przykładzie.Aby uzyskać informacje na temat uruchamiania dodatku, zobacz Porady: kontrolowanie dodatków za pomocą menedżera dodatków.

Zobacz też

Inne zasoby

Project Properties

Uzyskiwanie dostępu do projektu określonego typu, elementu projektu i właściwości konfiguracji