gpt4 book ai didi

c# - T4 - TT - 在 TT 文件中使用自定义类

转载 作者:技术小花猫 更新时间:2023-10-29 10:54:54 28 4
gpt4 key购买 nike

我想在我的 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();

但是我有这个错误信息:

Compiling transformation: The type or namespace name 'ClassDefinition' could not be found (are you missing a using directive or an assembly reference?)

我在互联网上查看并尝试:- 使用包括- 使用组装- 使用使用但没有任何效果。

有什么想法吗?

最佳答案

这里是完整的解决方案:

  1. 将类分离到另一个元素中

  2. 通过 TT via 包含对这些类的引用

    <#@ 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com