Partager via


Comment : répondre aux événements des références Web (Visual Basic)

Les événements d'environnement définis dans VSLangProj et VSLangProj80 sont spécifiques aux projets Visual C# et Visual Basic. VSLangProjWebReferencesEvents est un nouveau type dans Visual Studio. Il est déclenché lorsqu'une référence Web est ajoutée ou supprimée dans un projet Visual Basic ou Visual C#, ou lorsque les propriétés d'une référence Web sont modifiées dans un projet Visual Basic ou Visual C#.

Cet exemple utilise Visual Basic pour connecter des méthodes de gestion d'événements d'un projet spécifique à l'aide de la propriété VSLangProjWebReferencesEvents.

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes.Ces éléments dépendent de l'édition de Visual Studio dont vous disposez et des paramètres que vous utilisez.Pour plus d'informations, consultez Paramètres Visual Studio.

Pour gérer des événements liés à des références Web à l'aide de Visual Basic

  1. Créez un projet de complément Visual Studio dans Visual Basic.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, cliquez sur l'onglet .NET, puis sélectionnez les premiers VSLangProj et VSLangProj80. Cliquez ensuite sur OK.

  3. Ajoutez Imports VSLangProj et Imports VSLangProj80 au début du fichier Connect.vb.

  4. Dans la classe Connect, initialisez une variable pour gérer l'objet VSLangProjWebReferencesEvents.

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

    Dans cet exemple, la variable se nomme webRefEvents.

    D'autres objets présents dans le modèle Automation sont en rapport avec d'autres types d'événements spécifiques au projet. Par exemple, ImportsEvents est déclenché lorsqu'une instruction import est ajoutée ou supprimée dans une collection Imports. BuildManagerEvents s'applique aux événements liés aux assemblys temporaires créés à partir des sorties d'outils personnalisés. Pour plus d'informations sur l'objet BuildManager, consultez Introduction à l'objet BuildManager. Pour obtenir la liste complète des événements spécifiques aux types de projets, consultez Objets événement (spécifiques aux types de projets). Pour obtenir la liste des événements Automation généraux, consultez Objets événement d'automation.

  5. Ajoutez l'appel de méthode suivant à la méthode 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. Ajoutez la déclaration de méthode WebReferenceEventsSample directement sous la méthode OnConnection.

    Sub WebReferenceEventsSample(ByVal dte As DTE2)
    
    End Sub
    
  7. Ajoutez les déclarations suivantes au début de la méthode 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)
    

    La déclaration proj = soln.Projects.Item(1) requiert qu'un projet soit ouvert dans l'environnement de développement intégré (IDE) de Visual Studio lorsque vous exécutez cet exemple. En particulier, le projet doit être un projet Visual Basic ou Visual C#, car l'objet VSLangProjWebReferencesEvents est spécifique à ces types de projets.

  8. Effectuez un cast du projet en objet VSProject2 en ajoutant le code suivant à la méthode WebReferenceEventsSample.

    ' Cast the project to a VSProject2.
    vsproj = CType(proj.Object, VSProject2)
    
  9. Par ailleurs, dans la méthode WebReferenceEventsSample, récupérez les objets événement issus du modèle Automation.

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
    
  10. Connectez les gestionnaires d'événements.

    AddHandler webRefEvents.OnAfterWebReferenceAdded, _
     AddressOf WebReferenceAdded
    AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
     AddressOf WebReferenceRemoved
    AddHandler webRefEvents.OnWebReferenceChanged, _
     AddressOf WebReferenceChanged
    
  11. Ajoutez une référence Web au projet.

    ' 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)
    

    Pour ajouter par programmation une référence de service Web au projet, vous devez remplacer le texte d'espace réservé, <web reference>, placé dans le code par l'URL d'un véritable service Web.

    Cette étape entraîne le déclenchement de l'événement OnAfterWebReferenceAdded lorsque vous exécutez ce complément.

  12. Ajoutez des procédures pour chaque événement en rapport avec l'objet événement.

    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. Enfin, pour empêcher Visual Studio de ralentir votre système en continuant à surveiller les événements liés aux fenêtres une fois le complément fermé, désactivez la gestion des événements. Dans Visual Basic, vous devez, pour ce faire, affecter la valeur Nothing au gestionnaire d'événements.

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

    Le code complet est présenté dans la section Exemple de cette rubrique.

  14. Pour générer le complément, cliquez sur Générer la solution dans le menu Générer.

  15. Ouvrez un projet Visual C# ou Visual Basic dans l'environnement de développement intégré (IDE) de Visual Studio.

  16. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

Pour tester la gestion des événements VSLangProjWebReferencesEvents

  1. L'événement OnAfterWebReferenceAdded se déclenche lorsque vous exécutez le complément, car l'exemple ajoute une référence à un service Web par programmation.

  2. Pour tester l'événement OnWebReferenceChanged :

    • Développez le dossier Web References dans l'Explorateur de solutions.

    • Sélectionnez le service Web et cliquez dessus avec le bouton droit.

    • Dans le menu déroulant, sélectionnez Propriétés.

    • Dans la fenêtre Propriétés, faites passer le comportement de l'URL de dynamique à statique en sélectionnant Statique dans la zone de liste déroulante Comportement de l'URL.

  3. Pour tester l'événement OnBeforeWebReferenceRemoved :

    • Sélectionnez le service Web et cliquez dessus avec le bouton droit.

    • Dans le menu déroulant, sélectionnez Supprimer.

Exemple

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

Compilation du code

Pour compiler ce code, créez un projet de complément Visual Studio dans Visual Basic, puis remplacez le code de la classe Connect par le code de l'exemple. Pour plus d'informations sur l'exécution d'un complément, consultez Comment : contrôler des compléments avec le Gestionnaire de compléments.

Voir aussi

Tâches

Comment : répondre aux événements des références Web (Visual C#)

Autres ressources

Réponse aux événements d'automation

Réponse aux événements (projets Visual Basic et Visual C#)