我想在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/

10-09 18:20
查看更多