Compartilhar via


Diretiva de assembly T4

Em um modelo de texto de tempo de design do Visual Studio, a diretiva assembly carrega um assembly de modo que seu código de modelo possa usar os tipos desse assembly. O efeito é semelhante ao de adicionar uma referência de assembly em um projeto do Visual Studio.

Para obter uma visão geral da escrita de modelos de texto, confira Escrevendo um modelo de texto T4.

Observação

Você não precisa da diretiva assembly em um modelo de texto de tempo de execução (pré-processado). Em vez disso, adicione os assemblies necessários às Referências do projeto do Visual Studio.

Usando a diretiva de assembly

A sintaxe da diretiva é a seguinte:

<#@ assembly name="[assembly strong name|assembly file name]" #>

O nome do assembly deve ser um dos seguintes:

  • O nome forte do assembly no GAC, como System.Xml.dll. Você também pode usar o formato longo, como name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". Para obter mais informações, consulte AssemblyName.

  • O caminho absoluto do assembly

    Você pode usar a sintaxe $(variableName) para referenciar variáveis do Visual Studio, como $(SolutionDir), e %VariableName% para referenciar variáveis de ambiente. Por exemplo:

<#@ assembly name="$(SolutionDir)\MyProject\bin\Debug\SomeLibrary.Dll" #>

A diretiva de assembly não tem nenhum efeito em um modelo de texto pré-processado. Em vez disso, inclui as referências necessárias na seção Referências do projeto do Visual Studio. Para obter mais informações, confira Geração de texto em tempo de execução com modelos de texto T4.

Assemblies padrão

Os seguintes assemblies são carregados automaticamente, de modo que não seja necessário gravar diretivas de assembly para eles:

  • Microsoft.VisualStudio.TextTemplating.1*.dll

  • System.dll

  • WindowsBase.dll

    Se você usar uma diretiva personalizada, o processador de diretriz pode carregar os assemblies adicionais. Por exemplo, se você gravar modelos para uma linguagem específica do domínio (DSL), você não precisa gravar diretivas de assembly para os assemblies a seguir:

  • Microsoft.VisualStudio.Modeling.Sdk.1*.dll

  • Microsoft.VisualStudio.Modeling.Sdk.Diagrams.1*.dsl

  • Microsoft.VisualStudio.TextTemplating.Modeling.1*.dll

  • O assembly que contém seu DSL.

Usando propriedades do projeto no MSBuild e no Visual Studio

Macros do Visual Studio como $(SolutionDir) não funcionam no MSBuild. Se você quiser transformar modelos no computador de compilação, use as propriedades do projeto como alternativa.

Edite seu arquivo .csproj ou .vbproj para definir uma propriedade do projeto. Este exemplo define uma propriedade chamada myLibFolder:

<!-- Define a project property, myLibFolder: -->
<PropertyGroup>
    <myLibFolder>$(MSBuildProjectDirectory)\..\libs</myLibFolder>
</PropertyGroup>

<!-- Tell the MSBuild T4 task to make the property available: -->
<ItemGroup>
    <T4ParameterValues Include="myLibFolder">
      <Value>$(myLibFolder)</Value>
    </T4ParameterValues>
  </ItemGroup>

Agora você pode usar a propriedade do projeto em modelos de texto, que se transformam corretamente no Visual Studio e no MSBuild:

<#@ assembly name="$(myLibFolder)\MyLib.dll" #>

Confira também