Procedura: rispondere a eventi di riferimenti Web (Visual Basic)
Gli eventi di ambiente definiti in VSLangProj e VSLangProj80 sono specifici dei progetti Visual C# e Visual Basic.VSLangProjWebReferencesEvents è un nuovo tipo in Visual Studio 2005,che viene generato quando si aggiunge o si rimuove un riferimento Web da un progetto Visual Basic o Visual C#, oppure quando si modificano le proprietà di un riferimento Web in un progetto Visual Basic o Visual C#.
Nell'esempio riportato di seguito viene utilizzato Visual Basic per connettere i metodi di gestione degli eventi per un progetto specifico utilizzando la proprietà VSLangProjWebReferencesEvents.
[!NOTA]
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma.Queste procedure sono state sviluppate con le Impostazioni generali per lo sviluppo attive.Per modificare le impostazioni, scegliere Importa/esporta impostazioni dal menu Strumenti.Per ulteriori informazioni, vedere Impostazioni di Visual Studio.
Per gestire gli eventi relativi ai riferimenti Web mediante Visual Basic
Creare un progetto di componente aggiuntivo Visual Studio in Visual Basic.
Scegliere Aggiungi riferimento dal menu Progetto, quindi nella scheda .NET selezionare il primo progetto VSLangProj e VSLangProj80 e scegliere OK.
Aggiungere Imports VSLangProj e Imports VSLangProj80 all'inizio del file Connect.vb.
Nella classe Connect inizializzare una variabile alla gestione dell'oggetto VSLangProjWebReferencesEvents.
Public Class Connect Implements IDTExtensibility2 Dim _applicationObject As DTE2 Dim _addInInstance As AddIn Public WithEvents webRefEvents As _ VSLangProj80.VSLangProjWebReferencesEvents
In questo esempio la variabile è denominata webRefEvents.
Altri oggetti nel modello di automazione relativi ad altri tipi di eventi specifici del progetto.Ad esempio, ImportsEvents viene generato quando un'importazione viene aggiunta o rimossa da una raccolta Imports.BuildManagerEvents si applica a eventi correlati ad assembly temporanei compilati da output di strumenti personalizzati.Per ulteriori informazioni sull'oggetto BuildManager, vedere Introduzione all'oggetto BuildManager.Per un elenco completo degli eventi specifici dei tipi di progetti, vedere Oggetti di eventi (specifici dei tipi di progetto).Per un elenco degli eventi di automazione generici, vedere Oggetti degli eventi di automazione.
Aggiungere la chiamata al metodo OnConnection riportata di seguito.
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
Aggiungere la dichiarazione del metodo WebReferenceEventsSample direttamente sotto il metodo OnConnection.
Sub WebReferenceEventsSample(ByVal dte As DTE2) End Sub
Aggiungere le seguenti dichiarazioni all'inizio del metodo 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)
Quando si esegue questo esempio, con la dichiarazione proj = soln.Projects.Item(1) è necessario aprire un progetto nell'ambiente di sviluppo integrato (IDE) di Visual Studio.In particolare, deve trattarsi di un progetto Visual Basic o Visual C# perché l'oggetto VSLangProjWebReferencesEvents è specifico di questi tipi di progetto.
Eseguire il cast del progetto su un oggetto VSProject2 aggiungendo il codice riportato di seguito al metodo WebReferenceEventsSample.
' Cast the project to a VSProject2. vsproj = CType(proj.Object, VSProject2)
Sempre nel metodo WebReferenceEventsSample recuperare gli oggetti dell'evento dal modello di automazione.
webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
Connettere i gestori degli eventi.
AddHandler webRefEvents.OnAfterWebReferenceAdded, _ AddressOf WebReferenceAdded AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _ AddressOf WebReferenceRemoved AddHandler webRefEvents.OnWebReferenceChanged, _ AddressOf WebReferenceChanged
Aggiungere un riferimento Web al progetto.
' 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)
Per aggiungere un riferimento a un servizio Web in un progetto a livello di codice, è necessario sostituire il testo segnaposto <web reference> nel codice con l'URL di un servizio Web reale.
Questa operazione comporta la generazione dell'evento OnAfterWebReferenceAdded al momento dell'esecuzione del componente aggiuntivo in oggetto.
Aggiungere le routine di ciascun evento correlato all'oggetto degli eventi.
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
Infine, per evitare che dopo la chiusura del componente aggiuntivo Visual Studio rallenti le prestazioni del computer a causa del costante monitoraggio degli eventi relativi alle finestre, disabilitare la gestione degli eventi nel metodo OnDisconnection.Per eseguire questa operazione in Visual Basic, impostare il gestore eventi su Nothing.
Public Sub OnDisconnection(ByVal RemoveMode As_ Extensibility.ext_DisconnectMode, ByRef custom As System.Array)_ Implements Extensibility.IDTExtensibility2.OnDisconnection webRefEvents = Nothing End Sub
Il codice completo è disponibile nella sezione Esempio del presente argomento.
Scegliere Compila soluzione dal menu Compila per compilare il componente aggiuntivo.
Aprire un progetto Visual C# o Visual Basic nell'ambiente di sviluppo integrato (IDE) di Visual Studio.
Scegliere Gestione componenti aggiuntivi dal menu Strumenti, quindi selezionare il componente aggiuntivo nella finestra di dialogo Gestione componenti aggiuntivi.Scegliere OK per eseguire il componente aggiuntivo.
Per eseguire il test della gestione degli eventi di VSLangProjWebReferencesEvents
L'evento OnAfterWebReferenceAdded viene generato una volta al momento dell'esecuzione del componente aggiuntivo perchè nell'esempio viene aggiunto un riferimento a livello di codice a un servizio Web.
Per eseguire il test dell'evento OnWebReferenceChanged:
Espandere la cartella Riferimenti Web in Esplora soluzioni.
Selezionare il servizio Web e fare clic su di esso con il pulsante destro del mouse.
Scegliere Proprietà dal menu a discesa.
Nella finestra Proprietà modificare il comportamento dell'URL da dinamico in statico scegliendo Static dalla casella combinata Comportamento URL.
Per eseguire il test dell'evento OnBeforeWebReferenceRemoved:
Selezionare il servizio Web e fare clic su di esso con il pulsante destro del mouse.
Scegliere Elimina dal menu a discesa.
Esempio
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
Compilazione del codice
Per compilare il codice, creare un nuovo progetto aggiuntivo Visual Studio e in Visual Basic sostituire il codice della classe Connect con il codice riportato nell'esempio.Per informazioni sull'esecuzione di un componente aggiuntivo, vedere Procedura: controllare i componenti aggiuntivi tramite Gestione componenti aggiuntivi.
Vedere anche
Attività
Procedura: rispondere a eventi di riferimenti Web (Visual C#)