Compartilhar via


Como: Responder a eventos de referências da Web (Visual translation from VPE for Csharp)

Os eventos de ambiente definidos no VSLangProj e VSLangProj80 são específicas para Visual C#, Visual Basic, e Visual J# projetos. VSLangProjWebReferencesEvents é um novo tipo de Visual Studio 2005. Ele é disparado quando uma referência da Web é adicionada ou removida, ou quando suas propriedades são modificadas em um Visual Basic, Visual C#, ou Visual J# projeto.

Este exemplo usa Visual C# para conectar-se evento-manipulação de métodos 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 descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio.

Para manipular eventos relacionados às referências da Web usando translation from VPE for Csharp Visual

  1. Criar um Visual Studio projeto suplemento em Visual C#.

  2. Sobre o Projeto menu, clicar Adicionar referência, clicar no NET guia, selecionar a primeira VSLangProj e VSLangProj80 e clicar OK.

  3. Add using VSLangProj; e using VSLangProj80; para a parte superior do arquivo conectar.cs.

  4. Na classe conectar, inicializar uma variável para manipular o VSLangProjWebReferencesEvents objeto.

    private DTE2 _applicationObject;
    private AddIn _addInInstance;
    private VSLangProj80.VSLangProjWebReferencesEvents webRefEvents;
    

    No exemplo, a variável é denominada webRefEvents.

    Outros objetos no modelo de automação estão relacionadas 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. BuildManagerEvents aplica a eventos relacionados a assemblies temporários criados a partir de saídas de ferramentas personalizadas. Para obter mais informações sobre o BuildManager objeto, consulte Introdução ao objeto BuildManager. Para obter uma lista completa dos eventos que são específicas para tipos de projetos, consulte Objetos de evento (específicas para tipos de projetos). Para obter uma lista de eventos de automação Geral, consulte Objetos de eventos de automação.

  5. Adicione a seguinte telefonar de método para o método OnConnection.

    public void OnConnection(object application, 
    ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Call the WebReferenceEventsSample method.
        WebReferenceEventsSample (_applicationObject);
    }
    
  6. Adicione a declaração de método WebReferenceEventsSample diretamente abaixo o método OnConnection com as seguintes declarações.

    public void WebReferenceEventsSample(DTE2 dte)
    {
        Solution2 soln = (Solution2)_applicationObject.Solution;
        Project proj;
        VSProject2 vsproj;
        String webServiceRef;
        proj = soln.Projects.Item(1);
    }
    

    A declaração proj = soln.Projects.Item(1); requer que seja em aberto em um projeto a Visual Studio ambiente de desenvolvimento integrado (IDE) ao executar este exemplo. Em particular, o projeto deve ser um Visual Basic, Visual C#, ou Visual J# projeto porque o VSLangProjWebReferencesEvents objeto é específico para esses tipos de projeto.

  7. Converter o projeto para um VSProject2 objeto, adicionando o seguinte código ao método WebReferenceEventsSample.

    // Get a reference to the VSProject2 object.
    vsproj = (VSProject2)proj.Object;
    
  8. Recupera os objetos de evento do método WebReferenceEventsSample, o modelo de automação.

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents;
    
  9. No método WebReferenceEventsSample, conecte os manipuladores de eventos.

    webRefEvents.OnAfterWebReferenceAdded += new
     _dispVSLangProjWebReferencesEvents_OnAfterWebReferenceAddedEventHandler
    (webRefEvents_OnAfterWebReferenceAdded);
    webRefEvents.OnBeforeWebReferenceRemoved += new
    _dispVSLangProjWebReferencesEvents_OnBeforeWebReferenceRemovedEventHandler
    (webRefEvents_OnBeforeWebReferenceRemoved);
    webRefEvents.OnWebReferenceChanged += new
     _dispVSLangProjWebReferencesEvents_OnWebReferenceChangedEventHandler
    (webRefEvents_OnWebReferenceChanged);
    
  10. Método WebReferenceEventsSample, adicione uma referência a um serviço Web para o projeto.

    // Add a Web reference to the folder.
    // Replace the "<web reference>" with an actual Web service.
    MessageBox.Show("Adding a Web reference.", "Information");
    webServiceRef = "<web reference>";
    vsproj.AddWebReference(webServiceRef);
    

    Para adicionar uma referência a um serviço Web por meio de programação para o projeto, você deve substituir o texto do espaço reservado, <web reference>, no código com o URL de um serviço Web real.

    Essa etapa faz com que o OnAfterWebReferenceAdded evento seja acionado quando você executa esse suplemento.

  11. Adicione procedimentos para cada evento relacionado a objeto de evento abaixo no método WebReferenceEventsSample.

    void webRefEvents_OnWebReferenceChanged(object pDispatch)
    {
        MessageBox.Show("A Web reference was changed.");
    }
    void webRefEvents_OnBeforeWebReferenceRemoved(object pDispatch)
    {
        MessageBox.Show("A Web reference was removed.");
    }
    void webRefEvents_OnAfterWebReferenceAdded(object pDispatch)
    {
        MessageBox.Show("A Web reference was added." + pDispatch.Name);
    }
    
  12. Finalmente, para evitar que Visual Studio de diminuindo a velocidade do sistema ao continuar para monitorar eventos relacionados à janela depois de fechar o suplemento, desative o método OnDisconnection de manipulação de eventos.

    public void OnDisconnection(ext_DisconnectMode disconnectMode,
     ref Array custom)
    {
        // If the delegate handlers have been connected, then 
        // disconnect them here. 
        // If you do not do this, the handlers may still 
        // fire because garbage collection has not removed them.
        if (webRefEvents != null)
        {
            webRefEvents.OnAfterWebReferenceAdded -= new
     _dispVSLangProjWebReferencesEvents
    _OnAfterWebReferenceAddedEventHandler
    (webRefEvents_OnAfterWebReferenceAdded);
            webRefEvents.OnBeforeWebReferenceRemoved -= new
     _dispVSLangProjWebReferencesEvents
    _OnBeforeWebReferenceRemovedEventHandler
    (webRefEvents_OnBeforeWebReferenceRemoved);
            webRefEvents.OnWebReferenceChanged -= new
     _dispVSLangProjWebReferencesEvents
    _OnWebReferenceChangedEventHandler
    (webRefEvents_OnWebReferenceChanged);
        }
    }
    

    O código completo está listado na seção exemplo deste tópico.

  13. Para criar o suplemento, clicar Criar solução on the Compilação menu.

  14. Abra um Visual C#, Visual J#, ou Visual Basic projeto na Visual Studio ambiente de desenvolvimento integrado (IDE).

  15. Sobre o Ferramentas menu, clicar Gerenciador de suplementoe selecionar seu suplemento a partir de Gerenciador de suplemento caixa de diálogo.clicar OK para executar seu suplemento.

Para teste manipulação de eventos VSLangProjWebReferencesEvents

  1. The OnAfterWebReferenceAdded evento é acionado uma vez quando você executa o suplemento, porque o exemplo adiciona uma referência a um serviço Web por meio de programação.

  2. Para testar o OnWebReferenceChanged evento:

    • expandir o Referências da Web pasta O gerenciador de soluções.

    • selecionar serviço Web e clicar com o botão direito do mouse.

    • selecionar Propriedades menu suspenso.

    • Sobre o Propriedades janela, altere o comportamento URL de dinâmico para estático selecionando Estático from the Comportamento da URL caixa de combinação.

  3. Para testar o OnBeforeWebReferenceRemoved evento:

    • selecionar serviço Web e clicar com o botão direito do mouse.

    • selecionar Excluir menu suspenso.

Exemplo

O exemplo a seguir é um básico Visual Studio suplemento que demonstra como responder a eventos de referências da web, usando Visual Studio automação.

using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using System.Windows.Forms;
namespace MyAddin
{
public class Connect : Object, IDTExtensibility2
{
    public Connect()
    {
    }
    public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Call the WebReferenceEventsSample method.
        WebReferenceEventsSample(_applicationObject);
    }
    public void WebReferenceEventsSample(DTE2 dte)
    {
        try
         {
            Solution2 soln =
 (Solution2)_applicationObject.Solution;
            Project proj;
            VSProject2 vsproj;
            String webServiceRef;
            proj = soln.Projects.Item(1);
            // Get a reference to the VSProject2 object.
            vsproj = (VSProject2)proj.Object;
            //Connect Web references events.
            webRefEvents = 
vsproj.Events2.VSLangProjWebReferencesEvents;
            webRefEvents.OnAfterWebReferenceAdded +=new
 _dispVSLangProjWebReferencesEvents
_OnAfterWebReferenceAddedEventHandler
(webRefEvents_OnAfterWebReferenceAdded);
            webRefEvents.OnBeforeWebReferenceRemoved += new 
_dispVSLangProjWebReferencesEvents
_OnBeforeWebReferenceRemovedEventHandler
(webRefEvents_OnBeforeWebReferenceRemoved);
            webRefEvents.OnWebReferenceChanged += new
 _dispVSLangProjWebReferencesEvents
_OnWebReferenceChangedEventHandler
(webRefEvents_OnWebReferenceChanged);
            // Create a Web references folder.
            MessageBox.Show("Creating a Web references folder."
, "Information");
            vsproj.CreateWebReferencesFolder();
            // Add a Web reference to the folder.
            // Replace the "<web reference>" with an 
            // actual Web service URL.
            MessageBox.Show("Adding a Web reference."
, "Information");
            webServiceRef = "<web reference>";
            vsproj.AddWebReference(webServiceRef);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    void webRefEvents_OnWebReferenceChanged(object pDispatch)
    {
        MessageBox.Show("A Web reference was changed.");
    }
    void webRefEvents_OnBeforeWebReferenceRemoved(object pDispatch)
    {
        MessageBox.Show("A Web reference was removed.");
    }
    void webRefEvents_OnAfterWebReferenceAdded(object pDispatch)
    {
        MessageBox.Show("A Web reference was added.");
    }
    public void OnDisconnection(ext_DisconnectMode disconnectMode,
ref Array custom)
    {
        // If the delegate handlers have been connected, then 
        // disconnect them here. 
        // If you do not do this, the handlers may still 
        // fire because garbage collection has not removed them.
        if (webRefEvents != null)
        {
            webRefEvents.OnAfterWebReferenceAdded -= new
 _dispVSLangProjWebReferencesEvents
_OnAfterWebReferenceAddedEventHandler
 (webRefEvents_OnAfterWebReferenceAdded);
            webRefEvents.OnBeforeWebReferenceRemoved -= new
 _dispVSLangProjWebReferencesEvents
_OnBeforeWebReferenceRemovedEventHandler
(webRefEvents_OnBeforeWebReferenceRemoved);
            webRefEvents.OnWebReferenceChanged -= new
 _dispVSLangProjWebReferencesEvents
_OnWebReferenceChangedEventHandler
(webRefEvents_OnWebReferenceChanged);
        }
    }
    public void OnAddInsUpdate(ref Array custom)
    {
    }
    public void OnStartupComplete(ref Array custom)
    {
    }
    public void OnBeginShutdown(ref Array custom)
    {
    }

    private DTE2 _applicationObject;
    private AddIn _addInInstance;
    private VSLangProj80.VSLangProjWebReferencesEvents webRefEvents;
    }
}

Compilando o código

Para compilar este código, crie um novo Visual Studio projeto suplemento em Visual C# e substitua o código de classe conectar com o código de exemplo. Para obter informações sobre como executar um suplemento, consulte Como: Controlarar Adicionar-ins com o Adicionar - in Gerente.

Consulte também

Tarefas

Como: Responder a eventos de referências da Web (Visual Basic)

Outros recursos

Respondendo a eventos de automação

Respondendo a eventos (Visual Basic e Visual translation from VPE for Csharp projetos)