2010-06-14 65 views
6

虽然放在一起我在一个简单的lambda表达式扔了T4模板:Lambda表达式在T4模板

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

这会导致模板失败与错误产生:

Compiling transformation: Invalid expression term '>' 

在与lambda表达式一致。

这已在模板外部检查并且正常工作。 T4不支持使用lambda表达式吗?如果不是,在T4模板的上下文中是否还有其他语言功能不受支持?

谢谢!

+0

谷歌搜索http://geekswithblogs.net/gavin/archive/2010/03/13/138501.aspx,但仍然是一个黑客。 – Dykam 2010-06-14 15:44:51

回答

3

如果您在Visual Studio 2008中使用T4,请确保在template directive中将C#编译器版本设置为3.5。它默认使用2.0。

+0

谢谢,那正是问题所在。 – RSlaughter 2010-06-14 15:48:42

+0

如果您在Visual Studio 2012中使用T4,那么在尝试完成后会收到一条消息,指出“不再支持C#2.0和3.5,将始终使用版本4”?我还没有支持。 – Veverke 2015-09-21 14:31:36

0

作为解决办法,您可以将该代码放入外部类库中,然后您可以从T4模板中调用该类库。我必须多次这样做。它不理想,但它的工作原理。