我想在TT的CS文件中使用自己的类定义。
例:
public class ClassDefinition
{
public string NameSpace { get; set; }
public string Name { get; set; }
public string Protection { get; set; }
List<ClassProperty> Properties { get; set; }
}
我的TT看起来像:
<#@ 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();
但我有此错误信息:
我在互联网上检查并尝试:
-使用包括
-使用组装
-使用USING
但是没有任何效果。
有任何想法吗 ?
最佳答案
这是完整的解决方案:
1)将类分为另一个项目
2)通过TT包含对这些类的引用
<#@ assembly name="$(TargetDir)MyOwnLibraryProject.dll" #>
<#@ import namespace="MyOwnNamespace" #>
3)不要忘记在您的TT项目中包含此库的引用
4)您必须将MyOwnLibraryProject.dll复制到TT解决方案的BIN \ DEBUG文件夹中
5)魔术出现!
每次更改DLL时,请不要忘记将新版本放到文件夹中:)
或者只是将您的“图书馆”项目输出配置为与TT相同。
我要感谢大家提供指导方针和想法。
关于c# - T4-TT-在TT文件中使用自定义类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24957737/