T4模板中的Lambda表达式

6

在编写 T4 模板时,我加入了一个简单的 Lambda 表达式:

<#=string.Join(",", updateFields.ConvertAll(field => field.Name).ToArray())#>

这会导致模板无法生成并出现以下错误:
Compiling transformation: Invalid expression term '>'   

在使用lambda表达式时出现问题。

在模板外部检查是没有问题的。但是T4不支持使用lambda表达式吗?如果不支持,那么在T4模板的上下文中还有其他不支持的语言特性吗?

谢谢!


在谷歌上搜索了http://geekswithblogs.net/gavin/archive/2010/03/13/138501.aspx,尽管仍然是一个 hack。 - Dykam
2个回答

3

如果您正在使用Visual Studio 2008中的T4,请确保在模板指令中将C#编译器版本设置为3.5,因为默认情况下它使用2.0。


谢谢,那确实是问题所在。 - RSlaughter
如果您在Visual Studio 2012中使用T4,尝试后出现“不再支持C# 2.0和3.5。始终将使用版本4”的消息,那该怎么办?我的tt仍然没有得到支持。 - Veverke

0

作为一种解决方法,您可以将该代码放入外部类库中,然后从T4模板中调用它。我已经多次这样做过。虽然不是理想的解决方案,但它能够工作。


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