Directive d'assembly T4T4 Assembly Directive

Dans un modèle de texte au moment du design Visual StudioVisual Studio, la directive assembly charge un assembly afin que votre code de modèle puisse utiliser ses types.In a Visual StudioVisual Studio design-time text template, the assembly directive loads an assembly so that your template code can use its types. L'effet est semblable à l'ajout d'une référence d'assembly dans un projet Visual StudioVisual Studio.The effect is similar to adding an assembly reference in a Visual StudioVisual Studio project.

Pour obtenir une vue d’ensemble de l’écriture de modèles de texte, consultez l’écriture d’un modèle de texte T4.For a general overview of writing text templates, see Writing a T4 Text Template.

Note

Vous n'avez pas besoin de la directive assembly dans un modèle de texte au moment de l'exécution (prétraité).You do not need the assembly directive in a run-time (preprocessed) text template. Au lieu de cela, ajoutez les assemblys nécessaires à la références de votre Visual StudioVisual Studio projet.Instead, add the necessary assemblies to the References of your Visual StudioVisual Studio project.

Utilisation de la directive d'assemblyUsing the Assembly Directive

La syntaxe de la directive est la suivante :The syntax of the directive is as follows:

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

Le nom d'assembly doit correspondre à l'un des éléments suivants :The assembly name should be one of the following:

  • Nom fort d'un assembly dans le GAC, tel que System.Xml.dll.The strong name of an assembly in the GAC, such as System.Xml.dll. Vous pouvez également utiliser la forme longue, telle que name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".You can also use the long form, such as name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". Pour plus d'informations, consultez AssemblyName.For more information, see AssemblyName.

  • Chemin d’accès absolu de l’assemblyThe absolute path of the assembly

    Vous pouvez utiliser la syntaxe $(variableName) pour référencer des variables Visual StudioVisual Studio telles que $(SolutionDir), et %VariableName% pour référencer des variables d'environnement.You can use the $(variableName) syntax to reference Visual StudioVisual Studio variables such as $(SolutionDir), and %VariableName% to reference environment variables. Par exemple :For example:

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

La directive assembly n'a aucun effet dans un modèle de texte prétraité.The assembly directive has no effect in a preprocessed text template. Au lieu de cela, incluez les références nécessaires dans le références section de votre Visual StudioVisual Studio projet.Instead, include the necessary references in the References section of your Visual StudioVisual Studio project. Pour plus d’informations, consultez génération de texte d’exécution avec les modèles de texte T4.For more information, see Run-Time Text Generation with T4 Text Templates.

Assemblys standardStandard Assemblies

Les assemblys suivants sont chargés automatiquement, afin que vous n'ayez pas besoin d'écrire des directives d'assembly pour eux :The following assemblies are loaded automatically, so that you do not need to write assembly directives for them:

  • 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.If you use a custom directive, the directive processor might load additional assemblies. Par exemple, si vous écrivez des modèles pour un langage spécifique à un domaine (DSL), vous n’avez pas besoin d’écrire des directives d’assembly pour les assemblys suivants :For example, if you write templates for a domain-specific language (DSL), you do not need to write assembly directives for the following assemblies:

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

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

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

  • Assembly contenant votre DSL.The assembly containing your DSL.

À l’aide des propriétés de projet dans MSBuild et Visual StudioUsing project properties in both MSBuild and Visual Studio

Les macros Visual Studio telles que $ (SolutionDir) ne fonctionnent pas dans MSBuild.Visual Studio macros like $(SolutionDir) don't work in MSBuild. Si vous souhaitez transformer les modèles de votre ordinateur de build, vous devez utiliser les propriétés de projet à la place.If you want to transform templates in your build machine, you have to use project properties instead.

Modifiez votre fichier projet .csproj ou .vbproj pour définir une propriété de projet.Edit your .csproj or .vbproj file to define a project property. Cet exemple définit une propriété nommée myLibFolder :This example defines a property named 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 :Now you can use your project property in text templates, which transform correctly in both Visual Studio and MSBuild:

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

Voir aussiSee Also