Partilhar via


Processando 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 gera 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 da execução do aplicativo autônomo em um computador em que 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 executará dentro do 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.

Dica

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, use os modelos de texto pré-processados: consulte Geração de texto de 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 pode usar essa abordagem se seu aplicativo for executado em um computador em que o Visual Studio não está instalado. Para obter mais informações, consulte Geração de texto de tempo de execução com modelos de texto T4.

Executando um modelo de texto em seu aplicativo

Para executar um modelo de texto, chame o método ProcessTemplate de 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, você deve fornecer 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.

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

Nesta seção

Referência

ITextTemplatingEngineHost

Seções relacionadas