Aracılığıyla paylaş


Nasıl yapılır: Web Başvuruları Olaylarına Yanıt Verme (Visual Basic)

VSLangProj ve VSLangProj80 içinde tanımlanmış ortam olayları Visual C# ve Visual Basic projelerine özgüdür.VSLangProjWebReferencesEvents, Visual Studio içinde yeni bir türdür.Bir Visual Basic veya Visual C# projesinden veya Visual Basic veya Visual C# projesi içinde bir Web başvurusu özellikleri değiştirildiğinde bir Web başvurusu eklenir veya çıkarılır .

Bu örnekte, VSLangProjWebReferencesEvents özelliğini kullanarak belirli bir proje için olay işleme yöntemlerini bağlamak üzere Visual Basic kullanılmaktadır.

[!NOT]

Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir.Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler.Daha fazla bilgi için bkz. Visual Studio'da Geliştirme Ayarlarını özelleştirme.

Visual Basic kullanarak Web başvurularıyla ilgili olayları işlemek için

  1. Visual Basic öğesi içinde bir Visual Studio eklenti projesi oluşturun.

  2. Proje menüsünde, Başvuru Ekle'ye tıklayın, .NET sekmesine tıklayın, ilk VSLangProj ve VSLangProj80 öğesini seçin ve Tamama tıklayın.

  3. Connect.vb dosyasının üstüne Imports VSLangProj ve Imports VSLangProj80 ekleyin.

  4. Connect sınıfında bir değişkeni başlatarak VSLangProjWebReferencesEvents nesnesini işlemesini sağlayın.

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

    Bu örnekte, değişken webRefEvents olarak adlandırılır.

    Otomasyon modelindeki diğer nesneler, projeye özel diğer olay türleriyle ilgilidir.Örneğin, bir Imports koleksiyonunda bir dışarı aktarma eklendiğinde veya kaldırıldığında ImportsEvents oluşturulur.BuildManagerEvents, özel araçların çıkışlarından oluşturulan geçici derlemelerle ilgili olaylar için geçerlidir.BuildManager nesnesi hakkında daha fazla bilgi için bkz. BuildManager Nesnesine Giriş.Proje türleri için özel olan olayların tam listesi için bkz: Olay Nesneleri (Projelerin Türlerine Özgü).Genel otomasyon olaylarının bir listesi için bkz Otomasyon Olayı Nesneleri.

  5. Aşağıdaki yöntem çağrısını OnConnection yöntemine ekleyin.

    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. WebReferenceEventsSample yöntemi bildirimini doğrudan OnConnection yönteminin altına ekleyin.

    Sub WebReferenceEventsSample(ByVal dte As DTE2)
    
    End Sub
    
  7. WebReferenceEventsSample yönteminin üst kısmına aşağıdaki bildirimleri ekleyin.

    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)
    

    Bildirim proj = soln.Projects.Item(1) öğesi, bu örneği çalıştırdığınızda bir projenin Visual Studio tümleşik geliştirme ortamında (IDE) açık olmasını gerektirir.Özellikle, proje Visual Basic veya Visual C# projesi olmalıdır, çünkü VSLangProjWebReferencesEvents nesnesi bu proje türlerine özgüdür.

  8. WebReferenceEventsSample yöntemine aşağıdaki kodu ekleyerek projeyi VSProject2 nesnesine atayın.

    ' Cast the project to a VSProject2.
    vsproj = CType(proj.Object, VSProject2)
    
  9. WebReferenceEventsSample yönteminde de olay nesnelerini otomasyon modelinden alın.

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
    
  10. Olay işleyicileri bağlayın.

    AddHandler webRefEvents.OnAfterWebReferenceAdded, _
     AddressOf WebReferenceAdded
    AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
     AddressOf WebReferenceRemoved
    AddHandler webRefEvents.OnWebReferenceChanged, _
     AddressOf WebReferenceChanged
    
  11. Projeye bir Web referansı ekleyin.

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

    Projeye programsal olarak bir Web hizmeti başvurusu eklemek için, koddaki <web reference> yer tutucu metnini gerçek bir Web hizmetinin URL'siyle değiştirmelisiniz.

    Bu adım bu eklentiyi çalıştırdığınızda OnAfterWebReferenceAdded olayının ateşlenmesine neden olur.

  12. Olay nesnesiyle ilgili her olay için yordamlar ekleyin.

    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. Son olarak, eklentiyi seçtikten sonra Visual Studio öğesinin pencere ile ilgili olayları izlemeye devam ederek sisteminizi yavaşlatmasını önlemek için OnDisconnection yöntemindeki olay yönetimini devre dışı bırakın.Visual Basic içinde olay işleyicisinin Nothing olarak ayarlanmasıyla yapılır.

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

    Tam kod bu konunun Örnek bölümünde listelenmiştir.

  14. Eklentiyi derlemek için, Derle menüsünde Çözümü Derle'yi tıklayın.

  15. Visual Studio tümleşik yazılım geliştirme ortamında (IDE) Visual C# veya Visual Basic projesi açın.

  16. Araçlar menüsünde Eklenti Yöneticisi'ni tıklayın ve Eklenti Yöneticisi iletişim kutusundan eklentinizi seçin.Eklentinizi çalıştırmak için Tamam'ı tıklayın.

VSLangProjWebReferencesEvents olay işlemesini sınamak için

  1. Eklentiyi çalıştırdığınızda OnAfterWebReferenceAdded olayı başlar, çünkü örnek bir Web hizmetine program aracılığıyla bir başvuru ekler.

  2. OnWebReferenceChanged olayını test etmek için:

    • Çözüm Gezgini'nde Web Başvuruları klasörünü genişletin.

    • Web hizmetini seçin ve sağ tıklayın.

    • Aşağı açılan menüden Özellikler öğesini seçin.

    • Özellikler penceresinde, URL Davranışı karma kutusundan Statiki seçerek URL davranışını dinamikten statiğe değiştirin.

  3. OnBeforeWebReferenceRemoved olayını test etmek için:

    • Web hizmetini seçin ve sağ tıklayın.

    • Aşağı açılan menüden Sil öğesini seçin.

Örnek

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

Kod Derleniyor

Bu kodu derlemek için, Visual Basic içinde yeni bir Visual Studio eklentisi projesi oluşturun ve Connect sınıfının kodunu örnekteki kodla değiştirin.Eklenti çalıştırmak hakkında daha fazla bilgi edinmek için bkz. Nasıl yapılır: Eklenti Yöneticisini Kullanarak Eklentileri Denetleme.

Ayrıca bkz.

Görevler

Nasıl yapılır: Web Başvuruları Olaylarına Yanıt Verme (Visual C#)

Diğer Kaynaklar

Otomasyon Olaylarına Yanıt Verme

Olaylara Yanıt Verme (Visual Basic ve Visual C# Projeleri)