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
Utwórz projekt dodatku Visual Studio w Visual Basic.
W menu Projekt kliknij polecenie Dodaj odwołanie, kliknij kartę .NET, zaznacz pierwsze pozycje VSLangProj i VSLangProj80, a następnie kliknij przycisk OK.
Dodaj Imports VSLangProji Imports VSLangProj80 na początku pliku Connect.vb.
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.
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
Dodaj deklarację metody WebReferenceEventsSample bezpośrednio poniżej metody OnConnection.
Sub WebReferenceEventsSample(ByVal dte As DTE2) End Sub
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.
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)
Pobierz obiekty zdarzenia z modelu automatyzacji również w metodzie WebReferenceEventsSample.
webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
Łączenie programów obsługi zdarzeń.
AddHandler webRefEvents.OnAfterWebReferenceAdded, _ AddressOf WebReferenceAdded AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _ AddressOf WebReferenceRemoved AddHandler webRefEvents.OnWebReferenceChanged, _ AddressOf WebReferenceChanged
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.
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
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.
Aby utworzyć dodatek, kliknij Kompiluj rozwiązanie w menu Kompilacja.
Otwórz projekt w języku Visual C# lub Visual Basic w zintegrowanym środowisku projektowym (IDE) programu Visual Studio.
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
Zdarzenie OnAfterWebReferenceAdded wyzwalane jest raz, po uruchomieniu dodatku, ponieważ przykład programowo dodaje odwołanie do usługi sieci Web.
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.
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#)