【问题标题】:Can I execute code from another file in a T4 .tt template for code generation?我可以从 T4 .tt 模板中的另一个文件执行代码以生成代码吗?
【发布时间】:2013-03-28 10:00:35
【问题描述】:

我正在使用几个 T4 模板来生成几个 T4 文件,并且它们中的大多数共享很多相同的代码,所以我很自然地想用它制作一个函数并将它放在一个不同的文件中,所有的T4 文件可以访问。

但是我似乎无法找到一种方法,或者在谷歌上找到一种方法来实际使用存储在另一个文件中的代码。

这可能吗?如果是这样,是否有一个简单的例子来说明如何做到这一点?

【问题讨论】:

  • 你能告诉我们更多的场景吗,因为答案取决于你如何使用 T4,例如 Asp.net 视图脚手架与解决方案中的基本转换。
  • @GarethJ t4 文件正在 SQL 中查找 ID 表并生成一个 .cs 文件,其中的枚举与 id talble 匹配。感谢您迄今为止的帮助! =)

标签: c# code-generation t4


【解决方案1】:

从您的问题来看,听起来您只是在解决方案的普通模板文件中使用 T4。 在这种情况下,您只需使用 <#@ include #> 指令来提取您的共享代码。它是一种原始文本包含机制,类似于 C/C++ 的 #include,因此您可以移动尽可能多或尽可能少地共享到其他文件中。

请参阅文档here

值得注意的是,目前,include 指令在 ASP.Net 视图脚手架模板中不起作用。

如果您想与常规 C# 项目共享代码,这是可能的,但您需要将共享代码构建到您可以引用的程序集中。不能只使用<#@ include #> 指令直接拉入.cs 文件,因为指令不会嵌套在控件或类功能块中。

您可以使用记录在here 中的<#@ assembly #> 指令引用包含共享代码的帮助程序集。

【讨论】:

  • 我正在尝试 <#@ include file="test.cs" #> 但如果我尝试使用我的 test.cs 文件中的类,它会说找不到。
  • 啊,你想包含常规的 C# 代码,而不是专门的 T4 片段。我会修改我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 2022-08-17
相关资源
最近更新 更多