我们有一组 T4 模板,刚刚迁移到了 VS 2010,它们能够编译,但功能却不再与之前相同。
为了知道 内部的运行过程,很有必要查看 T4 生成的临时 cs 文件,以便产生实际的 T4 转换。
我们有一组 T4 模板,刚刚迁移到了 VS 2010,它们能够编译,但功能却不再与之前相同。
为了知道 内部的运行过程,很有必要查看 T4 生成的临时 cs 文件,以便产生实际的 T4 转换。
由于您现在正在使用Visual Studio 2010,因此您还可以将模板上的自定义工具从TextTemplatingFileGenerator暂时更改为TextTemplatingFilePreprocessor。
这将直接将底层代码输出到您的项目中,而不是常规模板输出。
<#@ template debug="true"#>
那么生成的代码将保存在您的临时目录中。在我的Windows 7系统上,这是 C:\Users\John Saunders\AppData\Local\Temp
。
我不知道如何完全按照您的要求进行操作,但我知道如何在Visual Studio中逐步执行t4代码。您需要启动Visual Studio的第二个实例,并使用Debug->Attach to process...将其附加到第一个实例上(将其附加到自身,很奇怪,我知道)。然后,您可以在第二个实例中在T4文件中设置断点,它会停止并让您逐步执行并查看正在发生的情况。
编辑:
您需要在Visual Studio中执行t4转换,而不是命令行工具才能使其正常工作。将您的.tt文件放入项目中,并在其属性中设置“Custom Tool”为“TextTemplatingFileGenerator”。每次告诉文件保存或右键单击文件并选择“运行自定义工具”时,它都会生成文件。有关更多信息,请参见this MSDN article。
我还建议使用tangible T4 editor,免费版本为大约90%的使用情况添加了代码高亮和智能感知(仅为.NET框架中Core.dll中的函数添加)。付费版本将为所有附加程序集添加智能感知。
编辑2:如果你真的想要它使用的临时cs文件,你可以在调试器中查看从临时文件夹加载的cs文件(我不记得确切的位置了)。
EF.Utility.CS.ttinclude
编译成包含类的程序集。+1 - Lukazoid