2010-06-14 56 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模板中調用該類庫。我必須多次這樣做。它不理想,但它的工作原理。