我可以从T4 .tt模板中的另一个文件执行代码生成代码吗?

Kyl*_*yle 9 c# t4 code-generation

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

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

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

Gar*_*thJ 8

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

请参阅此处的文档.

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

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

您可以使用此处<#@ assembly #>记录的指令引用包含共享代码的帮助程序集.