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, comoname="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" #>