Gewusst wie: Reagieren auf Webverweisereignisse (Visual Basic)
Aktualisiert: November 2007
Die in VSLangProj und VSLangProj80 definierten Umgebungsereignisse sind für Visual C#-, Visual Basic- und Visual J#-Projekte spezifisch. VSLangProjWebReferencesEvents ist ein neuer Typ in Visual Studio 2005. Er wird ausgelöst, wenn ein Webverweis in einem Visual Basic-, Visual C#- oder Visual J#-Projekt hinzugefügt oder entfernt wird oder wenn die Eigenschaften eines Webverweises in einem Visual Basic-, Visual C#- oder Visual J#-Projekt geändert werden.
In diesem Beispiel wird Visual Basic verwendet, um Ereignisbehandlungsmethoden für ein bestimmtes Projekt mithilfe der VSLangProjWebReferencesEvents-Eigenschaft zu verbinden.
Hinweis: |
---|
Die angezeigten Dialogfelder und Menübefehle können je nach den aktiven Einstellungen oder der verwendeten Version von den in der Hilfe beschriebenen abweichen. 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 behandeln Sie mit Webverweisen verbundene Ereignisse in Visual Basic
Erstellen Sie in Visual Basic ein Visual Studio-Add-In-Projekt.
Klicken Sie im Menü Projekt auf Verweis hinzufügen, klicken Sie auf die Registerkarte .NET, wählen Sie das erste VSLangProj und VSLangProj80 aus, und klicken Sie dann auf OK.
Fügen Sie am Anfang der Datei Connect.vb Imports VSLangProj und Imports VSLangProj80 ein.
Initialisieren Sie in der Connect-Klasse eine Variable zum Behandeln des VSLangProjWebReferencesEvents-Objekts.
Public Class Connect Implements IDTExtensibility2 Dim _applicationObject As DTE2 Dim _addInInstance As AddIn Public WithEvents webRefEvents As _ VSLangProj80.VSLangProjWebReferencesEvents
In diesem Beispiel hat die Variable den Namen webRefEvents.
Andere Objekte im Automatisierungsmodell beziehen sich auf andere projektspezifische Ereignistypen. So wird z. B. ImportsEvents ausgelöst, wenn Sie in einer Imports-Auflistung einen Importvorgang hinzufügen oder entfernen. BuildManagerEvents gilt für Ereignisse in Verbindung mit temporären Assemblys, die aus Ausgaben benutzerdefinierter Tools erstellt wurden. Weitere Informationen über das BuildManager-Objekt finden Sie unter Einführung in das BuildManager-Objekt. Eine vollständige Liste der Ereignisse, die für Projekttypen gelten, finden Sie unter Ereignisobjekte (abgestimmt auf Projekttypen). Eine Liste allgemeiner Automatisierungsereignisse finden Sie unter Ereignisobjekte für die Automatisierung.
Fügen Sie der OnConnection-Methode den folgenden Methodenaufruf hinzu.
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
Fügen Sie direkt unterhalb der OnConnection-Methode die WebReferenceEventsSample-Methodendeklaration hinzu.
Sub WebReferenceEventsSample(ByVal dte As DTE2) End Sub
Fügen Sie am Anfang der WebReferenceEventsSample-Methode die folgenden Deklarationen hinzu.
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)
Die Deklaration proj = soln.Projects.Item(1) erfordert, dass ein Projekt in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio geöffnet ist, wenn Sie dieses Beispiel ausführen. Hauptsächlich muss es sich bei dem Projekt um ein Visual Basic-, Visual C#- oder Visual J#-Projekt handeln, da das VSLangProjWebReferencesEvents-Objekt für diese Projekttypen spezifisch ist.
Wandeln Sie das Projekt in ein VSProject2-Objekt um, indem Sie der WebReferenceEventsSample-Methode den folgenden Code hinzufügen.
' Cast the project to a VSProject2. vsproj = CType(proj.Object, VSProject2)
Rufen Sie in der WebReferenceEventsSample-Methode zudem die Ereignisobjekte vom Automatisierungsmodell ab.
webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
Verbinden Sie die Ereignishandler.
AddHandler webRefEvents.OnAfterWebReferenceAdded, _ AddressOf WebReferenceAdded AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _ AddressOf WebReferenceRemoved AddHandler webRefEvents.OnWebReferenceChanged, _ AddressOf WebReferenceChanged
Fügen Sie einen Webverweis zum Projekt hinzu.
' 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)
Um dem Projekt programmgesteuert einen Webdienstverweis hinzuzufügen, ersetzen Sie den im Code enthaltenen Platzhaltertext <web reference> durch den URL eines tatsächlichen Webdienstes.
Dieser Schritt bewirkt, dass das OnAfterWebReferenceAdded-Ereignis ausgelöst wird, sobald Sie dieses Add-In ausführen.
Fügen Sie Verfahren für jedes auf das Ereignisobjekt bezogene Ereignis hinzu.
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
Um schließlich zu verhindern, dass Visual Studio nach Schließen des Add-Ins durch die fortdauernde Überwachung fensterbezogener Ereignisse die Systemleistung beeinträchtigt, deaktivieren Sie die Ereignisbehandlung. Dazu legen Sie in Visual Basic den Ereignishandler auf Nothing fest.
Public Sub OnDisconnection(ByVal RemoveMode As_ Extensibility.ext_DisconnectMode, ByRef custom As System.Array)_ Implements Extensibility.IDTExtensibility2.OnDisconnection webRefEvents = Nothing End Sub
Der vollständige Code wird im Beispielabschnitt dieses Themas aufgelistet.
Um das Add-In zu erstellen, klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Öffnen Sie in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio ein Visual C#-, Visual J#- 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.
So testen Sie die VSLangProjWebReferencesEvents-Ereignisbehandlung
Das OnAfterWebReferenceAdded-Ereignis wird einmal ausgelöst, sobald Sie das Add-In ausführen, da ein Verweis auf einen Webdienst im Beispiel programmgesteuert hinzugefügt wird.
So testen Sie das OnWebReferenceChanged-Ereignis:
Erweitern Sie im Projektmappen-Explorer den Ordner Webverweise.
Wählen Sie den Webdienst aus, und klicken Sie mit der rechten Maustaste darauf.
Wählen Sie im Dropdownmenü den Befehl Eigenschaften aus.
Ändern Sie im Eigenschaftenfenster das URL-Verhalten von dynamisch in statisch, indem Sie im Kombinationsfeld URL-Verhalten die Option Statisch auswählen.
So testen Sie das OnBeforeWebReferenceRemoved-Ereignis:
Wählen Sie den Webdienst aus, und klicken Sie mit der rechten Maustaste darauf.
Wählen Sie im Dropdownmenü den Befehl Löschen aus.
Beispiel
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
Kompilieren des Codes
Um diesen Code zu kompilieren, erstellen Sie in Visual Basic ein neues Visual Studio-Add-In-Projekt und ersetzen den Code der Connect-Klasse 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
Aufgaben
Gewusst wie: Reagieren auf Webverweisereignisse (Visual C#)
Weitere Ressourcen
Reagieren auf Automatisierungsereignisse
Reagieren auf Ereignisse (Visual Basic- und Visual C#-Projekte)