Passo a passo: Criando um serviço de linguagem (estrutura de pacote gerenciado)
Usando as classes de linguagem do framework (MPF) de pacote gerenciado para implementar um serviço de linguagem na Visual C# é simples. Você precisa de um VSPackage para hospedar o serviço de linguagem, o próprio serviço de linguagem e um analisador para o seu idioma.
Pré-requisitos
Para concluir este passo a passo, você deve instalar o SDL do Visual Studio 2010.
Dica
Para obter mais informações sobre o SDK de Visual Studio, consulte Ampliando a visão geral de Visual Studio.Para descobrir como fazer o download do SDK do Visual Studio, consulte Visual Studio extensibilidade Developer Center no site do MSDN.
Locais para o modelo de projeto de pacote de Visual Studio
O modelo de projeto de pacote de Visual Studio pode ser encontrado em três locais de modelo diferente no Novo projeto caixa de diálogo:
Em Visual Basic extensibilidade. O idioma padrão do projeto é Visual Basic.
Em C# extensibilidade. O idioma padrão do projeto é C#.
Em outra extensibilidade de tipos de projeto. O idioma padrão do projeto é C++.
Criar um VSPackage
Crie um novo VSPackage com o modelo de projeto do pacote de Visual Studio.
Se você estiver adicionando um serviço de linguagem a um VSPackage existente, ignore as etapas a seguintes e ir diretamente para o procedimento "Criar a classe de serviço de idioma".
Insira o nome do projeto MyLanguagePackage e clique em OK.
Você pode usar qualquer nome que você deseja. Esses procedimentos detalhados aqui presumir que MyLanguagePackage o nome.
Selecione Visual C# como o idioma e a opção para gerar um novo arquivo de chave. Clique em Next.
Digite as informações apropriadas de pacote e da empresa. Clique em Next.
Selecione comando de Menu. Clique em Next.
Se você não pretende oferecer suporte a trechos de código, basta clicar em Concluir e ignore a próxima etapa.
Insira Insert Snippet como o Nome do comando e cmdidInsertSnippet para o ID do comando. Clique em Finish.
O Nome do comando e ID do comando pode ser que você desejar, que são apenas exemplos.
Criar a classe de serviço do idioma
No Solution Explorer, clique com o botão direito no projeto MyLanguagePackage e selecione Add Reference.
No Add Reference caixa de diálogo, selecione Microsoft.VisualStudio.Package.LanguageService na .NET guia e clique em OK.
Isso precisa ser feito apenas uma vez para o projeto do pacote de idioma.
No Solution Explorer, clique com o botão direito no projeto VSPackage e selecione Add -> Classe.
Certifique-se de classe está selecionado na lista de modelos.
Insira o nome do arquivo da classe MyLanguageService.cs e clique em Add.
Você pode usar qualquer nome que você deseja. Estes procedimentos detalhados aqui pressupõem MyLanguageService como o nome.
No arquivo MyLanguageService.cs, adicione o seguinte using instruções.
Imports Microsoft.VisualStudio Imports Microsoft.VisualStudio.Package Imports Microsoft.VisualStudio.TextManager.Interop Imports Microsoft.VisualStudio.OLE.Interop
using Microsoft.VisualStudio; using Microsoft.VisualStudio.Package; using Microsoft.VisualStudio.TextManager.Interop; using Microsoft.VisualStudio.OLE.Interop;
Modificar o MyLanguageService classe para derivar a partir do LanguageService classe:
Friend Class MyLanguageService Inherits LanguageService
class MyLanguageService : LanguageService
Posicione o cursor em "LanguageService" e a partir de Editar -> IntelliSense menu, selecione Implementar classe abstrata. Isso adiciona métodos mínimos necessários para implementar uma classe de serviço do idioma.
Implementar os métodos abstratos, conforme descrito em Implementando um serviço de linguagem (estrutura de pacote gerenciado).
Registrar o serviço de linguagem
Abra o arquivo MyLanguagePackagePackage.cs e adicione o seguinte using instruções:
Imports Microsoft.VisualStudio Imports Microsoft.VisualStudio.Package Imports Microsoft.VisualStudio.TextManager.Interop
using Microsoft.VisualStudio; using Microsoft.VisualStudio.Package; using Microsoft.VisualStudio.TextManager.Interop;
Registrar sua classe de serviço do idioma, conforme descrito na Registrando um serviço de linguagem (estrutura de pacote gerenciado). Isso inclui os atributos de ProvideXX e as seções de "Proffering o serviço de idioma". Use MyLanguageService em que este tópico usa TestLanguageService.
Analisador e do Scanner
Implementar um analisador e o scanner para o seu idioma, conforme descrito em Analisador de serviço de linguagem e o Scanner (estrutura de pacote gerenciado).
Como você implementa o analisador e o scanner é integralmente com você e está além do escopo deste tópico.
Recursos do serviço de linguagem
Para implementar cada recurso no serviço de idioma, você normalmente deriva uma classe da classe de serviço de linguagem MPF apropriada, implementa quaisquer métodos abstratos conforme necessário e substituir os métodos apropriados. Que classes que você crie e/ou deriva de depende dos recursos que pretende suportar. Esses recursos são discutidos em detalhes em Recursos de serviço de linguagem (estrutura de pacote gerenciado). O procedimento a seguir é a abordagem geral para derivar uma classe de classes da MPF.
Derivar de uma classe do MPF
No Solution Explorer, o botão direito do mouse no projeto VSPackage e selecione Add -> Classe.
Certifique-se de classe está selecionado na lista de modelos.
Digite um nome adequado para o arquivo de classe e clique em Add.
No novo arquivo de classe, adicione o seguinte using instruções.
Imports Microsoft.VisualStudio Imports Microsoft.VisualStudio.Package Imports Microsoft.VisualStudio.TextManager.Interop Imports Microsoft.VisualStudio.OLE.Interop
using Microsoft.VisualStudio; using Microsoft.VisualStudio.Package; using Microsoft.VisualStudio.TextManager.Interop; using Microsoft.VisualStudio.OLE.Interop;
Modificar a classe para derivar da classe MPF desejada.
Adicione um construtor de classe que usa-se pelo menos os mesmos parâmetros do construtor da classe base e passar os parâmetros do construtor para o construtor de classe base.
Por exemplo, o construtor para uma classe derivada da Source classe pode parecer com o seguinte:
Namespace MyLanguagePackage Friend Class MySource Inherits Source Public Sub New(ByVal service As LanguageService, ByVal textLines As IVsTextLines, ByVal colorizer As Colorizer) MyBase.New(service, textLines, colorizer) End Sub End Class End Namespace
namespace MyLanguagePackage { class MySource : Source { public MySource(LanguageService service, IVsTextLines textLines, Colorizer colorizer) : base(service, textLines, colorizer) { } } }
Do Editar -> IntelliSense menu, selecione Implementar classe abstrata se a classe base tiver quaisquer métodos abstratos que devem ser implementados.
Caso contrário, posicione o cursor dentro da classe e insira o método a ser substituído.
Por exemplo, digite pública substituição para ver uma lista de todos os métodos que podem ser substituídas nessa classe.
Consulte também
Outros recursos
Implementando um serviço de idioma usando a estrutura de pacote gerenciado