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 entrada e produz um arquivo de texto como 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 uma máquina na qual o Visual Studio está instalado. No entanto, 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 lidando com as mensagens de saída e de erro.

Sugestão

Se você estiver escrevendo um pacote ou extensão que será executado 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 Invocando transformação de texto em uma extensão VS.

Observação

Não recomendamos o uso de transformações de modelo de texto em aplicativos de servidor. Não recomendamos o uso de transformações de modelo de texto, exceto em um único thread. Isso ocorre porque o mecanismo de modelagem de texto reutiliza um único AppDomain para traduzir, compilar e executar modelos. O código traduzido não foi projetado para ser thread-safe. O motor é concebido para processar ficheiros em série, como estão num projeto do Visual Studio no momento da conceção.

Para aplicações de tempo de execução, considere o uso de modelos de texto preprocessados: consulte 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 corrigidos em tempo de compilação, é mais fácil usar modelos de texto pré-processados. Você também pode usar essa abordagem se seu aplicativo será executado em uma máquina na qual o Visual Studio não está instalado. Para obter mais informações, consulte Run-Time Text Generation with T4 Text Templates.

Executar um modelo de texto em seu 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 encontrar e fornecer o modelo, e deve lidar com a saída.

host No parâmetro, você deve fornecer uma classe que implementa ITextTemplatingEngineHost. Isso é chamado de volta pelo Motor.

O host deve ser capaz de registrar erros, resolver referências a assembly e incluir arquivos, fornecer um domínio de aplicativo no qual o modelo possa ser executado e chamar o processador apropriado para cada diretiva.

Microsoft.VisualStudio.TextTemplating.Engine é definido em Microsoft.VisualStudio.TextTemplating.*.0.dlle ITextTemplatingEngineHost é definido em Microsoft.VisualStudio.TextTemplating.Interfaces.*.0.dll.

Nesta secção

Passo a passo: Criando um host de modelo de texto personalizado mostra como criar um host de modelo de texto personalizado que torna a funcionalidade de modelo de texto disponível fora do Visual Studio.

Reference

ITextTemplatingEngineHost