我能否在T4 .tt模板中执行另一个文件的代码以进行代码生成?

10
我正在使用多个T4模板生成多个T4文件,它们大部分都共享许多相同的代码,因此我想把它们封装成一个函数并放在另一个文件中,以便所有T4文件都可以访问。
然而,我似乎找不到方法或搜索方法来实际使用存储在其他文件中的代码。
这是否可能?如果可能的话,是否有一个简单的示例来演示如何做到这一点?

请问您能否提供更多的情境信息,因为答案取决于您如何使用T4,例如在您的解决方案中是作为Asp.net视图脚手架还是基本转换。 - GarethJ
t4文件正在查找SQL中的ID表,并生成与ID表匹配的枚举.cs文件。非常感谢你迄今为止的帮助! =) - Kyle
1个回答

8
根据您的问题,似乎您只是在解决方案中使用普通模板文件中的T4。在这种情况下,您可以使用<#@ include #>指令来导入共享代码。它是一种原始文本包含机制,类似于C/C++的#include,因此您可以将尽可能多或尽可能少的内容移动到其他文件中。
请参阅此处的文档(链接)
值得注意的是,目前在ASP.Net视图脚手架模板中,包含指令不起作用。
如果您想与您的常规C#项目共享代码,则有可能,但您需要将共享代码构建为可引用的程序集。不能直接使用<#@ include #>指令直接导入.cs文件,因为指令不能嵌套在控件或类特征块内部。
您可以使用文档(链接)中记录的<#@ assembly #>指令引用包含共享代码的辅助程序集。

我正在尝试使用 <#@ include file="test.cs" #>,但如果我尝试使用 test.cs 文件中的类,则会显示找不到该类。 - Kyle
啊,你想要包含常规的C#代码,而不是特定的T4片段。我会修改我的答案。 - GarethJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接