次の方法で共有


方法 : Web 参照イベントを処理する (Visual Basic)

更新 : 2007 年 11 月

VSLangProj および VSLangProj80 で定義されている環境イベントは、Visual C#、Visual Basic、および Visual J# の各プロジェクトに固有のイベントです。Visual Studio 2005 では、新たに VSLangProjWebReferencesEvents という型が追加されました。このイベントは、Visual Basic、Visual C#、または Visual J# の各プロジェクトで Web 参照が追加されたり削除されたりしたときや、Visual Basic、Visual C#、または Visual J# の各プロジェクトで Web 参照のプロパティが変更されたときに発生します。

ここでは、Visual Basic で VSLangProjWebReferencesEvents プロパティを使用して、特定のプロジェクトのイベント処理メソッドを関連付けます。

ms228953.alert_note(ja-jp,VS.90).gifメモ :

使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

Visual Basic を使用して Web 参照に関連したイベントを処理するには

  1. Visual Basic で Visual Studio のアドイン プロジェクトを作成します。

  2. [プロジェクト] メニューの [参照の追加] をクリックし、[.NET] タブをクリックします。次に、最初の VSLangProj および VSLangProj80 を選択して、[OK] をクリックします。

  3. Connect.vb ファイルの先頭に Imports VSLangProj および Imports VSLangProj80 を追加します。

  4. Connect クラスで、VSLangProjWebReferencesEvents オブジェクトを処理する変数を初期化します。

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

    この例では、変数に webRefEvents という名前を付けています。

    オートメーション モデルのオブジェクトは、それぞれ、プロジェクトに固有のさまざまなイベントと関連付けられています。たとえば、ImportsEvents は、Imports コレクションにインポートが追加されたりコレクションからインポートが削除されたときに発生します。また、BuildManagerEvents は、カスタム ツールの出力からビルドされた一時的なアセンブリに関連したイベントを表します。BuildManager オブジェクトの詳細については、「BuildManager オブジェクトの概要」を参照してください。プロジェクトの種類ごとの詳細なイベント一覧については、「イベント オブジェクト (プロジェクトの種類に固有)」を参照してください。一般的なオートメーション イベントの一覧については、「オートメーション イベント オブジェクト」を参照してください。

  5. 次のメソッド呼び出しを 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. WebReferenceEventsSample メソッドの宣言を OnConnection メソッドの直後に追加します。

    Sub WebReferenceEventsSample(ByVal dte As DTE2)
    
    End Sub
    
  7. 次の宣言を 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)
    

    宣言 proj = soln.Projects.Item(1) では、この例が実行するときに、プロジェクトを Visual Studio の統合開発環境 (IDE: Integrated Development Environment) で開くことを要求しています。VSLangProjWebReferencesEvents オブジェクトは、Visual Basic、Visual C#、および Visual J# のプロジェクトに固有のオブジェクトです。したがって、これらのいずれかのプロジェクトが使用されていることが前提となります。

  8. WebReferenceEventsSample メソッドに次のコードを追加して、プロジェクトを VSProject2 オブジェクトにキャストします。

    ' Cast the project to a VSProject2.
    vsproj = CType(proj.Object, VSProject2)
    
  9. 同様に、WebReferenceEventsSample メソッドで、オートメーション モデルからイベント オブジェクトを取得します。

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
    
  10. イベント ハンドラを関連付けます。

    AddHandler webRefEvents.OnAfterWebReferenceAdded, _
     AddressOf WebReferenceAdded
    AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
     AddressOf WebReferenceRemoved
    AddHandler webRefEvents.OnWebReferenceChanged, _
     AddressOf WebReferenceChanged
    
  11. プロジェクトに Web 参照を追加します。

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

    プログラムを使って、Web サービスに対する参照をプロジェクトに追加するには、コード中のプレースホルダ テキスト <web reference> を、実際の Web サービスの URL に置き換える必要があります。

    このステップにより、アドインを実行したときに OnAfterWebReferenceAdded イベントが生成されます。

  12. イベント オブジェクトに関連する各イベントにプロシージャを追加します。

    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. 最終的に、アドインの終了後もウィンドウに関連するイベントを引き続き監視して、Visual Studio によってシステムの処理速度が下がらないようにするには、イベント処理を無効にします。Visual Basic でイベント処理を無効にするには、イベント ハンドラを Nothing に設定します。

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

    完成したコードについては、このトピックの「使用例」を参照してください。

  14. アドインをビルドするには、[ビルド] メニューの [ソリューションのビルド] をクリックします。

  15. Visual Studio 統合開発環境 (IDE) で、Visual C#、Visual J#、または Visual Basic のプロジェクトを開きます。

  16. [ツール] メニューの [アドイン マネージャ] をクリックし、[アドイン マネージャ] ダイアログ ボックスからアドインを選択します。[OK] をクリックしてアドインを実行します。

VSLangProjWebReferencesEvents のイベント処理をテストするには

  1. この例では、Web サービスに対する参照をプログラムから追加しているため、OnAfterWebReferenceAdded イベントは、アドインの実行時に発生します。

  2. OnWebReferenceChanged イベントをテストするには

    • ソリューション エクスプローラで [Web References] フォルダを展開します。

    • Web サービスを選択し、それを右クリックします。

    • ドロップダウン メニューの [プロパティ] を選択します。

    • [プロパティ] ウィンドウで、[URL の動作] ボックスの一覧で [スタティック] を選択して、URL の動作を動的から静的に変更します。

  3. OnBeforeWebReferenceRemoved イベントをテストするには

    • Web サービスを選択し、それを右クリックします。

    • ドロップダウン メニューの [削除] を選択します。

使用例

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

コードのコンパイル方法

このコードをコンパイルするには、Visual Basic で新しい Visual Studio アドイン プロジェクトを作成し、Connect クラスのコードを例のコードで置き換えます。アドインの実行方法については、「方法 : アドイン マネージャを使用してアドインを制御する」を参照してください。

参照

処理手順

方法 : Web 参照イベントを処理する (Visual C#)

その他の技術情報

オートメーション イベントへの応答

イベントへの応答 (Visual Basic および Visual C# プロジェクト)