Udostępnij za pośrednictwem


Porady: odpowiadanie na zdarzenia odwołań sieci Web (Visual Basic)

Zdarzenia środowiska, określone w VSLangProj i VSLangProj80 są specyficzne dla projektów Visual C# i Visual Basic.VSLangProjWebReferencesEvents to nowy typ w Visual Studio.Jest zgłaszany, gdy odwołanie sieci Web jest dodane lub usunięte z projektu w języku Visual Basic lub Visual C# lub właściwości odwołania sieci Web są modyfikowane w projekcie w języku Visual Basic lub Visual C#.

Ten przykład używa Visual Basic do łączenia metod obsługi zdarzeń dla konkretnego projektu przy użyciu właściwości VSLangProjWebReferencesEvents.

[!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.

Do obsługi zdarzeń związanych z odwołaniami sieci Web przy użyciu Visual Basic

  1. Utwórz projekt dodatku Visual Studio w Visual Basic.

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

  3. Dodaj Imports VSLangProji Imports VSLangProj80 na początku pliku Connect.vb.

  4. W klasie Połącz zainicjuj zmienną do obsługi obiektu VSLangProjWebReferencesEvents.

    Public Class Connect
        Implements IDTExtensibility2
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
        Public WithEvents webRefEvents As _ 
        VSLangProj80.VSLangProjWebReferencesEvents
    

    W tym przykładzie zmienna ma nazwę webRefEvents.

    Inne obiekty w modelu automatyzacji odnoszą się do innych rodzajów zdarzeń, które są specyficzne dla projektu.Na przykład, obiekt ImportsEvents jest zgłaszany, gdy import jest dodawany lub usuwany z kolekcji Imports.BuildManagerEvents stosuje się do zdarzeń związanych z zestawami tymczasowymi zbudowanymi na podstawie danych wyjściowych narzędzi niestandardowych.Aby uzyskać więcej informacji na temat obiektu BuildManager, zobacz Wprowadzenie do obiektu BuildManager.Aby uzyskać pełną listę zdarzeń, które są specyficzne dla typów projektów, zobacz Obiekty zdarzeń (specyficzne dla typów projektów).Aby uzyskać listę ogólnych zdarzeń automatyzacji, zobacz Obiekty zdarzeń automatyzacji.

  5. Dodaj następujące wywołanie metody do metody OnConnection.

    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)
        WebReferenceEventsSample(_applicationObject)
    End Sub
    
  6. Dodaj deklarację metody WebReferenceEventsSample bezpośrednio poniżej metody OnConnection.

    Sub WebReferenceEventsSample(ByVal dte As DTE2)
    
    End Sub
    
  7. Dodaj następujące deklaracje na górze metody WebReferenceEventsSample.

    Dim soln As Solution2 = CType(_applicationObject.Solution, Solution2)
    Dim proj As Project
    Dim vsproj As VSProject2
    Dim webServiceRef As String
    proj = soln.Projects.Item(1)
    

    Deklaracja proj = soln.Projects.Item(1) wymaga, aby projekt był otwarty w zintegrowanym środowisku programistycznym (IDE) Visual Studio podczas uruchomienia tego przykładu.W szczególności projekt musi być w języku Visual Basic lub Visual C#, ponieważ obiekt VSLangProjWebReferencesEvents jest specyficzny dla tych typów projektów.

  8. Przekaż projekt do obiektu VSProject2, dodając następujący kod do metody WebReferenceEventsSample.

    ' Cast the project to a VSProject2.
    vsproj = CType(proj.Object, VSProject2)
    
  9. Pobierz obiekty zdarzenia z modelu automatyzacji również w metodzie WebReferenceEventsSample.

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
    
  10. Łączenie programów obsługi zdarzeń.

    AddHandler webRefEvents.OnAfterWebReferenceAdded, _
     AddressOf WebReferenceAdded
    AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
     AddressOf WebReferenceRemoved
    AddHandler webRefEvents.OnWebReferenceChanged, _
     AddressOf WebReferenceChanged
    
  11. Dodaj odwołanie sieci Web do tego projektu.

    ' Create a Web references folder.
    MsgBox("Creating a Web references folder.", MsgBoxStyle.Information)
    vsproj.CreateWebReferencesFolder()
    ' Add a Web reference to the folder.
    ' Replace the "<web reference>" with an actual Web service URL.
    MsgBox("Adding a Web reference.", MsgBoxStyle.Information)
    webServiceRef = "<web reference>"
    vsproj.AddWebReference(webServiceRef)
    

    Aby programowo dodać odwołanie do usługi sieci Web do projektu, należy zastąpić tekst symbolu zastępczego, <web reference>, w kodzie adresem URL rzeczywistej usługi sieci Web.

    Ten krok powoduje wyzwolenie zdarzenia OnAfterWebReferenceAdded po uruchomieniu tego dodatku.

  12. Dodawanie procedury dla każdego zdarzenia związanego z obiektem zdarzenia.

    Sub WebReferenceRemoved(ByVal removedRef As Object)
        MsgBox("A Web reference was removed.")
    End Sub
    Sub WebReferenceChanged(ByVal changedRef As Object)
        MsgBox("A Web reference was changed.")
    End Sub
    Sub WebReferenceAdded(ByVal addedRef As Object)
        MsgBox("A Web reference was added.")
    End Sub
    
  13. Na koniec aby zapobiec spowalnianiu przez program Visual Studio systemu poprzez kontynuowanie monitorowania zdarzeń związanych z oknami po zamknięciu dodatku, wyłącz obsługę zdarzeń.W języku Visual Basic odbywa się przez ustawienie programu obsługi zdarzeń na Nothing.

    Public Sub OnDisconnection(ByVal RemoveMode As_
     Extensibility.ext_DisconnectMode, ByRef custom As System.Array)_
     Implements Extensibility.IDTExtensibility2.OnDisconnection
        webRefEvents = Nothing
    End Sub
    

    Kompletny kod znajduje się w sekcji Przykład tego tematu.

  14. Aby utworzyć dodatek, kliknij Kompiluj rozwiązanie w menu Kompilacja.

  15. Otwórz projekt w języku Visual C# lub Visual Basic w zintegrowanym środowisku projektowym (IDE) programu Visual Studio.

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

Aby przetestować obsługę VSLangProjWebReferencesEvents

  1. Zdarzenie OnAfterWebReferenceAdded wyzwalane jest raz, po uruchomieniu dodatku, ponieważ przykład programowo dodaje odwołanie do usługi sieci Web.

  2. Aby przetestować zdarzenie OnWebReferenceChanged:

    • Rozwiń folder Odwołania sieci Web w Eksploratorze rozwiązania.

    • Wybierz usługę sieci Web i kliknij ją prawym przyciskiem myszy.

    • Wybierz Właściwości z menu rozwijanego.

    • W oknie Właściwości zmień zachowanie adresu URL z dynamicznego na statyczne przez zaznaczenie opcji Statyczne w polu kombi Zachowanie adresu URL.

  3. Aby przetestować zdarzenie OnBeforeWebReferenceRemoved:

    • Wybierz usługę sieci Web i kliknij ją prawym przyciskiem myszy.

    • Wybierz Usuń z menu rozwijanego.

Przykład

Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80

Public Class Connect
    Implements IDTExtensibility2
    Dim _applicationObject As DTE2
    Dim _addInInstance As AddIn
    Public WithEvents webRefEvents As _
    VSLangProj80.VSLangProjWebReferencesEvents
    Public Sub New()
    End Sub
    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)
        WebReferenceEventsSample(_applicationObject)
    End Sub
    Sub WebReferenceEventsSample(ByVal dte As DTE2)
        Try
            Dim soln As Solution2 = CType(_applicationObject.Solution _
            , Solution2)
            Dim proj As Project
            Dim vsproj As VSProject2
            Dim webServiceRef As String
            proj = soln.Projects.Item(1)
            ' Cast the project to a VSProject2.
            vsproj = CType(proj.Object, VSProject2)
            webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
            AddHandler webRefEvents.OnAfterWebReferenceAdded, _
            AddressOf WebReferenceAdded
            AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
            AddressOf WebReferenceRemoved
            AddHandler webRefEvents.OnWebReferenceChanged, _
            AddressOf WebReferenceChanged
            ' Create a Web references folder.
            MsgBox("Creating a Web references folder." _
            , MsgBoxStyle.Information)
            vsproj.CreateWebReferencesFolder()
            ' Add a Web reference to the folder.
            ' Replace the place holder <web reference> with
            ' a Web service URL.
            MsgBox("Adding a Web reference.", MsgBoxStyle.Information)
            webServiceRef = "<web reference>"
            vsproj.AddWebReference(webServiceRef)
        Catch ex As System.Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
    Sub WebReferenceRemoved(ByVal removedRef As Object)
        MsgBox("A Web reference was removed.")
    End Sub
    Sub WebReferenceChanged(ByVal changedRef As Object)
        MsgBox("A Web reference was changed.")
    End Sub
    Sub WebReferenceAdded(ByVal addedRef As Object)
        MsgBox("A Web reference was added.")
    End Sub
    Public Sub OnDisconnection(ByVal disconnectMode As _
    ext_DisconnectMode, ByRef custom As Array) Implements _
    IDTExtensibility2.OnDisconnection
        ' Turns off Web reference event handling when the 
        ' add-in shuts down.
        webRefEvents = Nothing
    End Sub
    Public Sub OnAddInsUpdate(ByRef custom As Array) _
    Implements IDTExtensibility2.OnAddInsUpdate
    End Sub
    Public Sub OnStartupComplete(ByRef custom As Array) _
    Implements IDTExtensibility2.OnStartupComplete
    End Sub
    Public Sub OnBeginShutdown(ByRef custom As Array) _
    Implements IDTExtensibility2.OnBeginShutdown
    End Sub
End Class

Kompilowanie kodu

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

Zobacz też

Zadania

Porady: odpowiadanie na zdarzenia odwołań sieci Web (Visual C#)

Inne zasoby

Odpowiadanie na zdarzenia automatyzacji

Odpowiadanie na zdarzenia (projekty Visual Basic oraz Visual C#)