Partager via


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 que name="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" #>

Voir aussi