Directive d'assembly T4
Dans un modèle de texte au moment de la conception Visual Studio, la directive assembly
charge un assembly afin que votre code de modèle puisse utiliser ses types. L’effet est semblable à l’ajout d’une référence d’assembly dans un projet Visual Studio.
Pour obtenir une vue d’ensemble de l’écriture de modèles de texte, consultez Écriture d’un modèle de texte T4.
Notes
Vous n'avez pas besoin de la directive assembly
dans un modèle de texte au moment de l'exécution (prétraité). À la place, ajoutez les assemblys nécessaires aux Références de votre projet Visual Studio.
Utilisation de la directive d'assembly
La syntaxe de la directive est la suivante :
<#@ assembly name="[assembly strong name|assembly file name]" #>
Le nom d'assembly doit correspondre à l'un des éléments suivants :
Nom fort d'un assembly dans le GAC, tel que
System.Xml.dll
. Vous pouvez également utiliser la forme longue, telle quename="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
. Pour plus d’informations, consultez AssemblyName.Chemin d’accès absolu de l’assembly
Vous pouvez utiliser la syntaxe
$(variableName)
pour référencer des variables Visual Studio telles que$(SolutionDir)
et%VariableName%
pour référencer des variables d’environnement. Par exemple :
<#@ assembly name="$(SolutionDir)\MyProject\bin\Debug\SomeLibrary.Dll" #>
La directive assembly n'a aucun effet dans un modèle de texte prétraité. Incluez plutôt les références nécessaires dans la section Références de votre projet Visual Studio. Pour plus d’informations, consultez Génération de texte à l’exécution à l’aide des modèles de texte T4.
Assemblys standard
Les assemblys suivants sont chargés automatiquement, afin que vous n'ayez pas besoin d'écrire des directives d'assembly pour eux :
Microsoft.VisualStudio.TextTemplating.1*.dll
System.dll
WindowsBase.dll
Si vous utilisez une directive personnalisée, le processeur de directive peut charger des assemblys supplémentaires. Par exemple, si vous écrivez des modèles pour un langage spécifique au domaine (DSL), vous n'avez pas besoin d'écrire des directives d'assembly pour les assemblys suivants :
Microsoft.VisualStudio.Modeling.Sdk.1*.dll
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.1*.dsl
Microsoft.VisualStudio.TextTemplating.Modeling.1*.dll
Assembly contenant votre langage spécifique à un domaine.
Utilisation des propriétés de projet dans MSBuild et Visual Studio
Les macros Visual Studio telles que $(SolutionDir) ne fonctionnent pas dans MSBuild. Si vous souhaitez transformer les modèles de votre ordinateur de build, vous devez utiliser les propriétés de projet à la place.
Modifiez votre fichier projet .csproj ou .vbproj pour définir une propriété de projet. Cet exemple définit une propriété nommée 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>
Maintenant, vous pouvez utiliser votre propriété de projet dans les modèles de texte, lesquels se transforment correctement dans Visual Studio et MSBuild :
<#@ assembly name="$(myLibFolder)\MyLib.dll" #>