项目模板和 C# 生成中的 T4

Posted

技术标签:

【中文标题】项目模板和 C# 生成中的 T4【英文标题】:T4 in item template and C# generation 【发布时间】:2014-06-13 00:34:39 【问题描述】:

我想在 Visual Studio 项模板中拥有一个 T4 模板,但我不希望在添加项后“tt”文件出现在项目中。简而言之,我想生成一个 .cs 文件,然后完全丢弃 .tt 文件。将项目添加到项目时,代码生成仅发生一次。

我设法将 .tt 文件添加到项目模板中,但我看不到在代码生成后如何丢弃它。

谢谢 洛朗

【问题讨论】:

如果真的是1次进程,为什么不添加tt文件来生成你的cs文件,然后复制掉生成的文件,删除tt文件,然后重新添加复制的vs文件到该项目? tt 将在磁盘上创建实际的 csv 文件。 将项目添加到项目时发生一次,意思是“每次将新项目添加到项目中”。我需要这一步自动发生。 明白了,能详细说明一下原因吗? tt 文件被编译器忽略,所以这个请求似乎纯粹是装饰性的。您可以使用什么实用程序项目来仅通过 tt 处理文件? 这是我创建的一个开源项目 MVVM Light。它在 xaml/c# 社区中被广泛使用,包括许多并不总是专家的开发人员。在项目中添加 .tt 文件会带来一些混乱,我想避免这种情况。我不需要额外的支持请求电子邮件询问我如何处理此文件。 明白,我喜欢并在我的 WP 应用程序中使用该库。我建议创建一个项目来为您进行不包含在开源存储库中的转换,因为它看起来像是您想要使用但不共享的个人实用程序(为了便于阅读)。您可以将其视为类似于文本编辑器中的宏的工具。 【参考方案1】:

here 显示的有形工具是可能的。这并不理想,但通过一些技巧,您可以从一个包含模板的项目生成一个文件到另一个项目中。然后,这使目标项目没有模板。

另一种方法是生成预处理模板,然后修改生成的文件以创建输出到自定义目标

【讨论】:

以上是关于项目模板和 C# 生成中的 T4的主要内容,如果未能解决你的问题,请参考以下文章

使用与模板存在于同一项目中的 T4 模板中的类型

通过 T4Scaffolding 将静态文件添加到项目

T4 TemplateFileManager 输出到项目文件夹

使用 t4 模板生成动态代码

来自服务器资源管理器的 T4 模板使用连接

T4模板循环生成插入语句