Ich möchte meine eigene Klasse definieren in einer CS-Datei in meinem TT verwenden.T4 - TT - Verwenden von benutzerdefinierten Klassen in TT-Dateien
Beispiel:
public class ClassDefinition
{
public string NameSpace { get; set; }
public string Name { get; set; }
public string Protection { get; set; }
List<ClassProperty> Properties { get; set; }
}
Mein TT wie folgt aussieht:
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="System" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml"#>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
<#@ include file="$(ProjectDir)ClassDefinition.cs" #>
<#
// Read the model file
XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(this.Host.ResolvePath("GeneratedXmlFile.xml"));
IList<XmlNode> nodeList = new List<XmlNode>();
foreach (XmlNode node in doc.DocumentElement)
{
switch(node.Name)
{
case "Model":
{
ClassDefinition classDefinition = new ClassDefinition();
Aber ich habe diese Fehlermeldung:
Compiling transformation: The type or namespace name 'ClassDefinition' could not be found (are you missing a using directive or an assembly reference?)
ich im Internet geprüft und versucht zu: - Einsatz Verwenden Sie - verwenden Sie die Baugruppe - verwenden Sie USING Aber nichts funktioniert.
Irgendwelche Ideen?
Diese wie eine offensichtliche Frage scheinen mag, aber Ihre ClassDefinition.cs im selben Projekt als * .tt Datei-Datei? – Thundter
Ja, es ist im selben Projekt! – Eagle
Warum verschieben Sie das ClassDefinition-Objekt nicht in ein neues/anderes DLL-Projekt. Fügen Sie das Projekt zu Ihren Referenzen hinzu und importieren Sie die Ausgabe-DLL in Ihre Vorlage? – Thundter