Passo a passo: Chamando o Visual Studio SDK usando automação
Esta explicação passo a passo ilustra como criar um suplemento de Visual Studio que consome um serviço de Visual Studio. O add-in que você cria obtém um provedor de serviços e o usa para obter um serviço. Você pode usar essa mesma técnica para obter qualquer serviço de Visual Studio proffered. Para obter mais informações sobre os serviços e provedores de serviços, consulte Serviços. Os procedimentos a seguir demonstram como criar um add-in e, em seguida, obter um serviço do suplemento.
Criando um suplemento
Nesta seção, você cria um suplemento Visual Studio usando o modelo de projeto Add-In Visual Studio.
Para criar um suplemento
Abra Visual Studio. Sobre o arquivo , aponte para New e, em seguida, clique em Novo projeto.
A caixa de diálogo New Project será exibida.
No painel esquerdo da Novo projeto caixa de diálogo caixa, expanda o Other Project Types nó e em seguida, clique o extensibilidade nó.
Criar uma nova Visual Studio projeto de suplemento denominado Addin.
O Visual Studio assistente Add-In é executado.
No Select a Programming Language , selecione criar um Add-In usando Visual C# ou criar um Add-In usando o Visual Basic.
Sobre o Selecione um aplicativo Host , selecione Microsoft Visual Studio 2010 e desmarque Macros do Microsoft Visual Studio 2010.
No Insira um nome e descrição de página, digite MyAddin no nome caixa e MyAddin explicação passo a passo no Descrição caixa.
Sobre o Escolher opções de suplemento página, selecione você gostaria de criar comando UI da barra para seu suplemento?. Desmarque as outras caixas de seleção.
Aceite todos os outros padrões.
Compilar a solução e verifique se ele foi compilado sem erros.
Obtendo um serviço de um suplemento
As etapas a seguir orientam a aquisição de um serviço de seu suplemento.
Para obter um serviço.
Abra o arquivo Connect. cs ou Connect. vb e adicionar essas linhas para o using (C#) ou Imports (Visual Basic) instruções:
Imports System.Runtime.InteropServices Imports Microsoft.VisualStudio.OLE.Interop Imports Microsoft.VisualStudio.Shell.Interop Imports IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider
using System.Runtime.InteropServices; using Microsoft.VisualStudio.OLE.Interop; using Microsoft.VisualStudio.Shell.Interop; using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
Clique com o botão direito no nó do projeto em Solution Explorer e adicioná-los.NET referências:
Microsoft.VisualStudio.OLE.Interop Microsoft.VisualStudio.Shell.Interop
Adicionar essas linhas de código para o if(commandName == "Addin.Connect.Addin") ou If commandName = "Addin.Connect.Addin" Then cláusula da Exec método:
If commandName = "Addin.Connect.Addin" Then Dim sp As IOleServiceProvider = DirectCast(_applicationObject, IOleServiceProvider) Dim SID As Guid = GetType(SVsUIShell).GUID Dim IID As Guid = GetType(IVsUIShell).GUID Dim output As IntPtr sp.QueryService(SID, IID, output) Dim uiShell As IVsUIShell = DirectCast(Marshal.GetObjectForIUnknown(output), IVsUIShell) Dim clsid As Guid = Guid.Empty Dim result As Integer uiShell.ShowMessageBox(0, clsid, "MyAddin", String.Format(System.Globalization.CultureInfo.CurrentCulture, "Inside " & Me.ToString()), String.Empty, 0, _ OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result) handled = True Return End If
if (commandName == "Addin.Connect.Addin") { IOleServiceProvider sp = (IOleServiceProvider) _applicationObject; Guid SID = typeof(SVsUIShell).GUID; Guid IID = typeof(IVsUIShell).GUID; IntPtr output; sp.QueryService(ref SID, ref IID, out output); IVsUIShell uiShell = (IVsUIShell)Marshal.GetObjectForIUnknown(output); Guid clsid = Guid.Empty; int result; uiShell.ShowMessageBox( 0, ref clsid, "MyAddin", string.Format( CultureInfo.CurrentCulture, "Inside " + this.ToString()), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result); handled = true; return; }
Esse código converte o objeto atual do aplicativo (tipo DTE2) em um IOleServiceProvider, em seguida, chama QueryService para obter o SVsUIShell service. Este serviço oferece uma IVsUIShell interface. O ShowMessageBox método exibe uma caixa de mensagem quando o add-in é executado.
Criar e iniciar o projeto de suplemento no modo de depuração pressionando F5.
Isso iniciará outra instância do Visual Studio.
Nos novos Visual Studio da instância, diante do Ferramentas menu, clique em Addin. A caixa de mensagem exibirá o seguinte:
MyAddin Inside Addin.Connect