Vorrei utilizzare la mia classe definita in un file CS nel mio TT.T4 - TT - Uso di classi personalizzate in file TT
Esempio:
public class ClassDefinition
{
public string NameSpace { get; set; }
public string Name { get; set; }
public string Protection { get; set; }
List<ClassProperty> Properties { get; set; }
}
mio TT si presenta come:
<#@ 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();
Ma ho questo messaggio di errore:
Compiling transformation: The type or namespace name 'ClassDefinition' could not be found (are you missing a using directive or an assembly reference?)
ho controllato su internet e ha cercato di: - uso includi - usa l'assemblaggio - usa USING Ma niente funziona.
Qualche idea?
Questo può sembrare una domanda ovvia, ma è il vostro file ClassDefinition.cs nello stesso progetto del file .tt *? – Thundter
Sì, è nello stesso progetto! – Eagle
Perché non spostare l'oggetto ClassDefinition in un nuovo/diverso progetto dll. Aggiungi il progetto ai tuoi riferimenti e importa la dll di output nel tuo modello? – Thundter