Freigeben über


T4-Assemblydirektive

In einer Visual Studio-Entwurfszeittextvorlage wird mit der assembly-Direktive eine Assembly geladen, damit im Vorlagencode die Typen der Vorlage verwendet werden können. Der Effekt 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-Direktive ist in einer Laufzeitvorlage (vorverarbeiteten Vorlage) nicht erforderlich.Fügen Sie den Verweisen des Visual Studio-Projekts stattdessen die notwendigen Assemblys hinzu.

Verwenden der Assemblydirektive

Die Syntax der Direktive 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-Direktive 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 Assemblydirektiven 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 Assemblydirektiven 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" #>

Siehe auch

Konzepte

T4-Include-Direktive