2010-06-14 31 views
6

Trong khi đặt cùng một mẫu T4 Tôi đã ném trong một biểu thức lambda đơn giản:Lambda Expressions trong T4 Templates

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

Điều này làm cho mẫu để thất bại trong việc tạo ra với các lỗi:

Compiling transformation: Invalid expression term '>' 

Trên phù hợp với biểu thức lambda.

Điều này đã được kiểm tra bên ngoài mẫu và hoạt động tốt. T4 không hỗ trợ làm việc với các biểu thức lambda? Nếu không, có bất kỳ tính năng ngôn ngữ nào khác không được hỗ trợ trong ngữ cảnh của mẫu T4 không?

Cảm ơn!

+0

Googled http://geekswithblogs.net/gavin/archive/2010/03/13/138501.aspx, vẫn là một bản hack. – Dykam

Trả lời

3

Nếu bạn đang sử dụng T4 trong Visual Studio 2008, hãy đảm bảo rằng bạn có phiên bản trình biên dịch C# được đặt thành 3,5 trong template directive. Nó sử dụng 2.0 theo mặc định.

+0

Cảm ơn, đó chính xác là vấn đề. – RSlaughter

+0

Nếu bạn đang sử dụng T4 trong Visual Studio 2012, nơi bạn nhận được thông báo cho biết "C# 2.0 và 3.5 không còn được hỗ trợ. Phiên bản 4 sẽ luôn được sử dụng" sau khi thử? My tt vẫn không có hỗ trợ. – Veverke

0

Là một công việc xung quanh, bạn có thể đặt mã đó vào thư viện lớp bên ngoài, sau đó bạn có thể gọi từ trong mẫu T4. Tôi đã phải làm điều đó một số lần. Nó không lý tưởng, nhưng nó hoạt động.

Các vấn đề liên quan