Freigeben über


T4-Assemblydirektive

In einer Visual Studio-Entwurfszeit-Textvorlage lädt die assembly-Assemblyanweisung eine Assembly, damit Ihr Vorlagencode deren Typen verwenden kann. Das Ergebnis ist mit dem Hinzufügen eines Assemblyverweises in einem Visual Studio-Projekt vergleichbar.

Eine allgemeine Übersicht über das Schreiben von Textvorlagen finden Sie unter Schreiben einer T4-Textvorlage.

Hinweis

Die assembly-Anweisung ist in einer Laufzeitvorlage (vorverarbeiteten Vorlage) nicht erforderlich. Fügen Sie den Verweisen des Visual Studio-Projekts stattdessen die notwendigen Assemblys hinzu.

Verwenden der Assemblyanweisung

Die Syntax der Anweisung lautet wie folgt:

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

Folgende Optionen stehen zum Angeben des Assemblynamens zur Verfügung:

  • Der starke Name einer Assembly im GAC, z. B. System.Xml.dll. Sie können auch das lange Formular verwenden, z. B. name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". Weitere Informationen finden Sie unter AssemblyName.

  • Absoluter Pfad der Assembly

    Sie können mit der $(variableName)-Syntax auf Visual Studio-Variablen wie $(SolutionDir) und mit %VariableName% auf Umgebungsvariablen verweisen. Beispiel:

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

Die assembly-Anweisung hat in einer vorverarbeiteten Textvorlage keinerlei Auswirkungen. Schließen Sie stattdessen die notwendigen Verweise in den Abschnitt Verweise des Visual Studio-Projekts ein. Weitere Informationen finden Sie unter Laufzeittextgenerierung mithilfe von T4-Textvorlagen.

Standardassemblys

Die folgenden Assemblys werden automatisch geladen, damit Sie keine Assemblyanweisungen dafür schreiben müssen:

  • Microsoft.VisualStudio.TextTemplating.1*.dll

  • System.dll

  • WindowsBase.dll

    Wenn Sie eine benutzerdefinierte Direktive verwenden, lädt der Direktivenprozessor möglicherweise zusätzliche Assemblys. Wenn Sie z. B. Vorlagen für eine domänenspezifische Sprache (DSL) schreiben, müssen Sie keine Assemblyanweisungen für die folgenden Assemblys schreiben:

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

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

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

  • Die Assembly mit der DSL.

Verwenden von Projekteigenschaften in MSBuild und Visual Studio

Visual Studio-Makros wie $(SolutionDir) funktionieren nicht in MSBuild. Wenn Sie Vorlagen im Buildcomputer transformieren möchten, müssen Sie dies mithilfe von Projekteigenschaften tun.

Bearbeiten Sie die CSPROJ- oder VBPROJ-Datei, und definieren Sie eine Projekteigenschaft. In folgendem Beispiel wird eine Eigenschaft mit dem Namen myLibFolder definiert:

<!-- 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>

Nun können Sie die Projekteigenschaft in Textvorlagen verwenden, die sowohl in Visual Studio als auch in MSBuild ordnungsgemäß transformiert werden:

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

Weitere Informationen