Partilhar via


Processar modelos de texto usando um host personalizado

O processo de transformação do modelo de texto usa um arquivo de modelo de texto como a entrada e gera um arquivo de texto como a saída. Você pode chamar o mecanismo de transformação de texto de uma extensão do Visual Studio ou de um aplicativo autônomo em execução em um computador no qual o Visual Studio está instalado. Porém, você deve fornecer um host de modelagem de texto. Essa classe conecta o modelo ao ambiente, localizando recursos, como assemblies e arquivos de inclusão, e resolvendo a saída e as mensagens de erro.

Dica

Se você estiver escrevendo um pacote ou uma extensão que será executada no Visual Studio, considere usar o serviço de modelagem de texto, em vez de escrever seu próprio host. Para obter mais informações, consulte Invocar a transformação de texto em uma extensão VS.

Observação

Não recomendamos usar transformações de modelo de texto em aplicativos de servidor. Não recomendamos usar transformações de modelo de texto, exceto em um thread único. Isso ocorre porque o mecanismo de modelagem de texto reutiliza um único AppDomain para converter, compilar e executar modelos. O código convertido não foi criado para ser isento de threads. O mecanismo é criado para processar arquivos em série, pois estão em um projeto do Visual Studio no tempo de design.

Para aplicativos em tempo de execução, considere o uso de modelos de texto pré-processados: confira Geração de texto em tempo de execução com modelos de texto T4.

Se seu aplicativo usa um conjunto de modelos que são fixos no tempo de compilação, é mais fácil usar modelos de texto pré-processados. Você também poderá usar essa abordagem se seu aplicativo for executado em um computador no qual o Visual Studio não está instalado. Para obter mais informações, confira Geração de texto em tempo de execução com modelos de texto T4.

Executar um modelo de texto no aplicativo

Para executar um modelo de texto, chame o método ProcessTemplate de Microsoft.VisualStudio.TextTemplating.Engine:

using Microsoft.VisualStudio.TextTemplating;
...
Engine engine = new Engine();
string output = engine.ProcessTemplate(templateString, host);

Seu aplicativo deve localizar e fornecer o modelo, e deve lidar com a saída.

No parâmetro host, forneça uma classe que implementa ITextTemplatingEngineHost. Isso é chamado novamente pelo mecanismo.

O host deve ser capaz de registrar erros, resolver referências ao assembly e arquivos de inclusão, fornecer um domínio de aplicativo no qual o modelo pode executar e chamar o processador adequado para cada diretiva.

Microsoft.VisualStudio.TextTemplating.Engine é definido no Microsoft.VisualStudio.TextTemplating.*.0.dll, e ITextTemplatingEngineHost é definido no Microsoft.VisualStudio.TextTemplating.Interfaces.*.0.dll.

Nesta seção

Instruções passo a passo: criar um host de modelo de texto personalizado Mostra como criar um host de modelo de texto personalizado que disponibiliza a funcionalidade de modelo de texto fora do Visual Studio.

Referência

ITextTemplatingEngineHost