Condividi tramite


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 Gestione delle impostazioni.

Per gestire gli eventi relativi ai riferimenti Web mediante Visual Basic

  1. Creare un progetto di componente aggiuntivo Visual Studio in Visual Basic.

  2. Scegliere Aggiungi riferimento dal menu Progetto, quindi nella scheda .NET selezionare il primo progetto VSLangProj e VSLangProj80 e scegliere OK.

  3. Aggiungere Imports VSLangProj e Imports VSLangProj80 all'inizio del file Connect.vb.

  4. 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 un insieme 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.

  5. Al metodo OnConnection aggiungere la chiamata al metodo 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
    
  6. Aggiungere la dichiarazione del metodo WebReferenceEventsSample direttamente sotto il metodo OnConnection.

    Sub WebReferenceEventsSample(ByVal dte As DTE2)
    
    End Sub
    
  7. 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.

  8. 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)
    
  9. Sempre nel metodo WebReferenceEventsSample recuperare gli oggetti dell'evento dal modello di automazione.

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
    
  10. Connettere i gestori degli eventi.

    AddHandler webRefEvents.OnAfterWebReferenceAdded, _
     AddressOf WebReferenceAdded
    AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
     AddressOf WebReferenceRemoved
    AddHandler webRefEvents.OnWebReferenceChanged, _
     AddressOf WebReferenceChanged
    
  11. 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.

  12. 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
    
  13. 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.

  14. Scegliere Compila soluzione dal menu Compila per compilare il componente aggiuntivo.

  15. Aprire un progetto Visual C# o Visual Basic nell'ambiente di sviluppo integrato (IDE) di Visual Studio.

  16. Scegliere Gestione componenti aggiuntivi dal menu Strumenti e 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

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

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

  3. 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 ulteriori 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#)

Altre risorse

Risposta a eventi di automazione

Risposta agli eventi (progetti Visual Basic e Visual C#)