Como: responder a eventos de referências da Web (Visual Basic)
Os eventos de ambiente definidos na VSLangProj e VSLangProj80 são específicas para Visual C# e Visual Basic projetos.VSLangProjWebReferencesEventsé um novo tipo de Visual Studio 2005.Ele é disparado quando uma referência da Web for adicionada ou removida de um Visual Basic ou Visual C# o projeto, ou quando as propriedades de uma referência da Web são modificadas em um Visual Basic ou Visual C# project.
Este exemplo usa Visual Basic para conectar métodos de manipulação de eventos para um projeto específico usando o VSLangProjWebReferencesEvents propriedade.
Observação |
---|
As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o General Development Settings ativo.Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu.Para obter mais informações, consulte Configurações de Visual Studio. |
Para manipular eventos relacionados às referências da Web usando o Visual Basic
Criar um Visual Studio projeto de suplemento no Visual Basic.
Sobre o projeto menu, clique em Add Reference, clique no .NET , selecione o primeiro VSLangProj e VSLangProj80 e clique em OK.
Adicionar Imports VSLangProj e Imports VSLangProj80 na parte superior do arquivo Connect. vb.
Na classe Connect, inicializar uma variável para lidar com o VSLangProjWebReferencesEvents objeto.
Public Class Connect Implements IDTExtensibility2 Dim _applicationObject As DTE2 Dim _addInInstance As AddIn Public WithEvents webRefEvents As _ VSLangProj80.VSLangProjWebReferencesEvents
Neste exemplo, a variável é chamada webRefEvents.
Outros objetos no modelo de automação referem-se a outros tipos de eventos que são específicos para o projeto.Por exemplo, ImportsEvents é disparado quando uma importação é adicionada ou removida de um Imports coleção.BuildManagerEventsaplica-se para eventos relacionados a assemblies temporários criados a partir de saídas de ferramentas personalizadas.Para obter mais informações sobre BuildManager de objeto, consulte Introdução ao objeto BuildManager.Para obter uma lista completa dos eventos que são específicos para tipos de projetos, consulte Objetos de evento (específicas para tipos de projetos).Para obter uma lista de eventos de automação gerais, consulte Objetos de evento de automação.
Adicione a seguinte chamada de método para o método 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
Adicione a declaração de método de WebReferenceEventsSample diretamente abaixo o método OnConnection.
Sub WebReferenceEventsSample(ByVal dte As DTE2) End Sub
Adicione as seguintes declarações na parte superior do método 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)
A declaração proj = soln.Projects.Item(1) requer que um projeto é aberto no Visual Studio o ambiente de desenvolvimento integrado (IDE), quando você executar esse exemplo.Em particular, o projeto deve ser um Visual Basic ou Visual C# de projeto porque a VSLangProjWebReferencesEvents objeto é específico para esses tipos de projeto.
Converter o projeto para um VSProject2 o objeto, adicionando o seguinte código ao método WebReferenceEventsSample.
' Cast the project to a VSProject2. vsproj = CType(proj.Object, VSProject2)
Também no método WebReferenceEventsSample, recupere os objetos de eventos do modelo de automação.
webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
Conecte os manipuladores de eventos.
AddHandler webRefEvents.OnAfterWebReferenceAdded, _ AddressOf WebReferenceAdded AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _ AddressOf WebReferenceRemoved AddHandler webRefEvents.OnWebReferenceChanged, _ AddressOf WebReferenceChanged
Adicione uma referência da Web ao projeto.
' 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)
Para adicionar programaticamente uma referência de serviço da Web ao projeto, você deve substituir o texto de espaço reservado, <web reference>, no código com a URL de um serviço da Web real.
Essa etapa faz com que o OnAfterWebReferenceAdded evento seja acionado quando você executar este suplemento.
Adicione os procedimentos para cada evento relacionado ao objeto de evento.
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
Por fim, para evitar Visual Studio da redução do seu sistema continuando a monitorar eventos relacionados a janela depois de fechar o add-in, desabilitar o tratamento do evento.Na Visual Basic, isso é feito, definindo o manipulador de eventos para Nothing.
Public Sub OnDisconnection(ByVal RemoveMode As_ Extensibility.ext_DisconnectMode, ByRef custom As System.Array)_ Implements Extensibility.IDTExtensibility2.OnDisconnection webRefEvents = Nothing End Sub
O código completo está listado na seção exemplo deste tópico.
Para construir o add-in, clique em Build Solution sobre o Build menu.
Abrir um Visual C# ou Visual Basic de projeto na Visual Studio o ambiente de desenvolvimento integrado (IDE).
No Ferramentas menu, clique em Gerenciador de suplementose selecione o add-in da Gerenciador de suplementos caixa de diálogo.Clique em OK para executar seu suplemento.
Para testar o tratamento de evento VSLangProjWebReferencesEvents
O OnAfterWebReferenceAdded evento é acionado uma vez quando você executa o add-in, porque o exemplo adiciona uma referência a um serviço da Web por meio de programação.
Para testar o OnWebReferenceChanged evento:
Expanda o Referências da Web pasta na Solution Explorer.
Selecione o serviço da Web e clique sobre ela.
Selecione Propriedades no menu drop-down.
No Propriedades janela, alterar o comportamento de URL de dinâmico para estático por selecionando estático da Comportamento URL caixa de combinação.
Para testar o OnBeforeWebReferenceRemoved evento:
Selecione o serviço da Web e clique sobre ela.
Selecione Excluir no menu drop-down.
Exemplo
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
Compilando o código
Para compilar esse código, crie um novo Visual Studio projeto de suplemento no Visual Basic e substitua o código da classe conectar-se com o código do exemplo.Para obter informações sobre como executar um suplemento, consulte Como: Add-Ins de controle, usando o Gerenciador de suplemento.
Consulte também
Tarefas
Como: responder a eventos de referências da Web (Visual C#)
Outros recursos
Respondendo a eventos de automação
Respondendo a eventos (Visual Basic e projetos do Visual C#)