Partilhar via


Geração de código em um processo de compilação

Você pode invocar a transformação de texto como parte do processo de compilação de um Visual Studio solução.Você pode usar isso para garantir que os arquivos gerados a partir dos modelos sejam atualizados antes que eles são compilados.Isso permite que você evitar uma situação na qual o usuário esqueceu em Transformar todos os modelos de antes de construir o projeto ou verificar no código.Transformação de texto, as tarefas podem ser executadas por Visual Studio ou MSBuild e em um servidor de compilação.

Incluindo tarefas de transformação de texto em arquivos de projeto

Ee847423.collapse_all(pt-br,VS.110).gifInstalar o SDK de modelagem e visualização

Para ativar tarefas de compilação no computador de desenvolvimento, instale o SDK de modelagem e de visualização de Visual Studio.

Para ativar tarefas de compilação em um servidor de compilação, consulte Transformação de texto em um servidor de compilação.

Ee847423.collapse_all(pt-br,VS.110).gifEdite o arquivo de projeto

Para invocar a transformação de texto, você precisará editar o arquivo que define o seu projeto.Essas propriedades não podem ser editadas no editor de propriedades do projeto.Portanto, você deve fechar o projeto e editá-lo como um arquivo de texto.

Para editar o texto do arquivo de projeto

  1. No Solution Explorer, clique com o botão direito no projeto e, em seguida, clique em Unload Project.

  2. Clique novamente com o botão direito no projeto e, em seguida, clique em Editarprojeto.

    O texto do arquivo do projeto aparece no editor XML.

Para reabrir o projeto quando terminar de editar

  1. Feche o editor de XML.

  2. No Solution Explorer, clique com o botão direito no projeto e, em seguida, clique em Reload Project.

Ee847423.collapse_all(pt-br,VS.110).gifImportar os destinos de transformação de texto

As tarefas de criação de transformação de texto são definidas em um único arquivo.Você deve importá-lo após os destinos padrão de C# ou Visual Basic.

Para importar os destinos de transformação de texto

  1. Procure o arquivo uma linha semelhante a uma das seguintes linhas:

    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

    - ou -

    <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />

  2. Após essa linha, insira a importação de modelagem de texto:

    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v11.0\Microsoft.TextTemplating.targets" />

Ee847423.collapse_all(pt-br,VS.110).gifDefinir propriedades de controle como a compilação é executada.

Insira o texto a seguir no arquivo de projeto.Consulte as seções a seguir para outras propriedades que podem ser inseridas neste grupo de propriedade.

<PropertyGroup>
 <TransformOnBuild>true</TransformOnBuild>
 <!-- Other properties can be inserted here -->
</PropertyGroup>

TransformOnBuildfaz com que todos os modelos do projeto a ser executado quando você constrói o projeto.

Ee847423.collapse_all(pt-br,VS.110).gifInvocar a transformação

Ee847423.collapse_all(pt-br,VS.110).gifTransformando todos os modelos em uma compilação de projeto

Se você incluir a propriedade a seguir no arquivo de projeto, todos os modelos de texto no projeto serão executados sempre que o projeto é construído, sujeitos ao recurso de compilação incremental.

<TransformOnBuild>true</TransformOnBuild>

Você pode chamar transforma qualquer um, pressionando F5 no Visual Studio, ou usando o MSBuild.Por exemplo:

msbuild myproject.csproj

Se você omitir TransformOnBuild ou em conjunto para modelos falsos, não será transformado como uma parte automática da compilação do projeto.

Ee847423.collapse_all(pt-br,VS.110).gifAdicionando caminhos de referência

Você pode adicionar ao conjunto de caminhos em que o host procura em assemblies referenciados nos modelos.Por exemplo:

<ItemGroup>
    <!-- Add VS\...\PublicAssemblies to the list of places
         to look for assemblies used by templates. -->
    <T4ReferencePath Include="$(VsIdePath)PublicAssemblies\" />
</ItemGroup>

Ee847423.collapse_all(pt-br,VS.110).gifTransformando modelos específicos

Você pode transformar os arquivos especificados, chamando o Transform de tarefas com o msbuild utilitário.Esta tarefa não depende do TransformOnBuild propriedade e ele não compila os arquivos do projeto.Você deve importar o arquivo de destinos de modelagem de texto conforme descrito em uma seção anterior.

Por exemplo, para transformar um arquivo específico:

msbuild myproj.proj /t:Transform /p:TransformFile=MyTemplate.tt

Você também pode usar caracteres curinga na TransformFile parâmetro.Por exemplo, este comando transforma todos os arquivos de .tt sob a pasta GeneratedCode:

msbuild dsl.csproj /t:Transform /p:TransformFile="GeneratedCode\**\*.tt"

Ee847423.collapse_all(pt-br,VS.110).gifIncremental Build

Por padrão, o Gerenciador de compilação tenta evitar a execução de um modelo se seu arquivo de saída está atualizado.Para fazer isso, ele monitora o sistema de arquivos para ver quais arquivos são lidos pelo código de modelo.Em ocasiões subseqüentes, ele compara as datas de modificação desses arquivos com a data do arquivo de saída.Ele executa o modelo se qualquer arquivo de entrada tiver sido modificado mais recentemente do que o arquivo de saída.O modelo também é executado se não houver nenhuma informação sobre as execuções anteriores deste modelo.

O resultado é que o arquivo de saída será regenerado se ele for mais antigo do que qualquer um dos seguintes arquivos:

  • O arquivo de modelo de texto

  • Arquivos que são especificados na <#@include#> diretivas

  • Arquivos que são lidos pelo código no modelo

  • Arquivos incluídos ou lido por um processador de diretriz usado no modelo

Se você desejar certificar-se de que todos os modelos são executados em cada compilação, insira esta propriedade:

<TransformOutOfDateOnly>false</TransformOutOfDateOnly>

Ee847423.collapse_all(pt-br,VS.110).gifControle de origem

Não há nenhuma integração interna específica com um sistema de controle de origem.No entanto, você pode adicionar suas próprias extensões, por exemplo, para fazer check-out e check-in de um arquivo gerado.

Por padrão, a tarefa de transformação de texto evita sobrescrever um arquivo que está marcado como leitura-somente e quando esse arquivo for encontrado, um erro é registrado na Visual Studio lista de erros e a tarefa de falha.

Para especificar que arquivos somente leitura devem ser substituídos, insira esta propriedade:

<OverwriteReadOnlyOuputFiles>true</OverwriteReadOnlyOuputFiles>

A menos que você personaliza a etapa de pós-processamento, um aviso será registrado na lista de erros quando um arquivo é substituído.

Ee847423.collapse_all(pt-br,VS.110).gifPersonalizando o processo de compilação

Você pode personalizar o processo de compilação, por exemplo, fazer check-out de arquivos que tenham sido substituídos.São fornecidos dois pontos de personalização que são chamados de antes e após a transformação.

Para definir esses pontos, defina as propriedades $(BeforeTransform) e $(AfterTransform).

Por exemplo:

<PropertyGroup>
    <BeforeTransform>CustomPreTransform</BeforeTransform>
    <AfterTransform>CustomPostTransform;$(AfterTransform)</AfterTransform>
  </PropertyGroup>
  <Target Name="CustomPreTransform">
    <Message Text="In CustomPreTransform..." Importance="High" />
  </Target>
  <Target Name="CustomPostTransform">
    <Message Text="In CustomPostTransform..." Importance="High" />
  </Target>

Na AfterTransform, você pode consultar as listas a seguir:

  • GeneratedFiles - uma lista de arquivos gravados pelo processo.Para os arquivos que sobrescreveu arquivos existentes de somente leitura, %(GeneratedFiles.ReadOnlyFileOverwritten) será true.Esses arquivos podem ser verificados fora de controle de origem.

  • NonGeneratedFiles - uma lista de arquivos somente leitura que não foram substituídos.

Usando estas listas, você pode, por exemplo, confira arquivos substituídos.

Transformação de texto em um servidor de compilação

Se seu servidor de compilação é executado em um computador no qual Visual Studio não é instalado, você deve copiar os seguintes arquivos para o computador de construção de um computador no qual SDK do Visual Studio está instalado:

  • \Arquivos de Programas\Microsoft Visual Studio SDK\VisualStudioIntegration\Common\Assemblies\v4.0\ de 2010

    • Microsoft.VisualStudio.TextTemplating.11.0.dll

    • Microsoft.VisualStudio.TextTemplating.interfaces.11.0.dll

    • Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll

  • \Program Files\MSBuild\Microsoft\VisualStudio\TextTemplating\v11.0\

    • Microsoft.VisualStudio.TextTemplating.SDK.host.11.0.dll
  • \Arquivos de Programas\Microsoft 11.0\Common7\IDE\PublicAssemblies\ de Visual Studio

    • Microsoft.VisualStudio.TextTemplating.Modeling.11.0.dll

Para obter mais informações, consulte Implantar e configurar um Build Controller.

Consulte também

Outros recursos

SDK de modelagem e visualização de Visual Studio