2

我最近开始对一个相当复杂的 T4 类进行单元测试。我已经取得了重大突破,但恐怕观察到的行为可能只是巧合(即,可能会在未来版本的 Visual Studio 中中断)

我基本上有这样的东西:

主模板.tt:

<#@ include file="generator.tt.cs" #>

然后在 generator.tt.cs 我有

//<#+
class code
{
....
}
//#>

观察到的行为是,我既可以使用 T4 模板中声明的类等,也可以正常编译代码文件。<#+但是,是否在所有定义的行为中都在and#>标记之前添加了注释?我将来会冒这种破坏的风险吗?

此外,我已经在 MonoDevelop 和 Visual Studio 2012 上对此进行了测试。它似乎对两者都有效。不过,Visual Studio 2008 的兼容性对我来说并不重要。

4

1 回答 1

3

我不能说我们将来不会“永远”破坏事物,但我发现很难想象我们会做些什么来破坏它。功能块内的评论将始终受到尊重,并且需要尊重之前的评论以允许生成评论。我认为你是安全的。

我认为您必须在 generator.tt.cs 文件中使用完全限定的名称,因为没有地方可以放置 using 语句或命名空间。

这与您通过一些空的存根模板为您的测试预编译帮助程序库然后测试预编译版本相比如何?

于 2012-11-01T07:04:25.863 回答