2009-10-07 18 views
5

Tôi cần chỉ định T4 của mình để sử dụng C# 4.0, để hiển thị các tệp tt của tôi? Tôi đã cố gắng sử dụngLàm cách nào tôi có thể chỉ định T4 (Mẫu văn bản) để sử dụng C# 4.0, trong VS2010?

<#@ template language="C#v4.0" debug="true" #> 

Nhưng khi tôi sử dụng một biến động, như thế này

dynamic x=10; 
Write(x.ToString()); 

tôi nhận được các lỗi này

Error 2 Compiling transformation: Predefined type 'Microsoft.CSharp.RuntimeBinder.CSharpSetMemberBinder' is not defined or imported e:\projects\DynamicModel\DynamicModel\ModelGenerator.tt 1 1 
Error 3 Compiling transformation: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder..ctor' e:\projects\DynamicModel\DynamicModel\ModelGenerator.tt 1 1 
Error 4 Compiling transformation: Missing compiler required member 'System.Runtime.CompilerServices.CallSite.Create' e:\projects\DynamicModel\DynamicModel\ModelGenerator.tt 1 1 
Error 5 Compiling transformation: One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll? e:\Projects\DynamicModel\DynamicModel\ModelGenerator.tt 7 8 
Error 6 A namespace cannot directly contain members such as fields or methods e:\projects\DynamicModel\DynamicModel\ModelGenerator.cs 1 1 DynamicModel 

Ngoài ra, xin lưu ý rằng tôi đang sử dụng TextTemplatingFileGenerator và Không các mẫu xử lý trước

+0

Bạn đã thử xem các mẫu được cung cấp với VS2010 chưa? – Lazarus

+0

Đúng, nó sẽ hoạt động miễn là bạn không sử dụng biến số động – amazedsaint

Trả lời

4

Tìm thấy rằng bạn cũng nên chỉ định các cụm chính xác.

Việc thêm này sẽ đảm bảo bạn đang sử dụng C# 4.0.

<#@ template language="C#" debug="true" #> 
<#@ output extension=".txt" #> 
<#@ Assembly Name="System.Core, Version=4.0.0.0, Culture=neutral" #> 
<#@ Assembly Name="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral" #> 

Bao giờ, vì lý do nào đó, trong thời gian chuyển đổi t4, việc gửi đi động vẫn không hoạt động từ T4, tự hỏi tại sao. Từ T4 nó ném một lỗi thời gian chạy, cùng một mã không tốt trực tiếp từ một tập tin cs.

+0

Bạn đã thử sử dụng T4 được biên dịch trước chưa? http://www.olegsych.com/2009/09/t4-preprocessed-text-templates/ –

+0

Infact Tôi đã nhận nó đúng, nhờ – amazedsaint

+0

Và FYI tôi đang sử dụng một máy chủ mẫu tùy chỉnh, không trực tiếp chạy t4 từ VS :) – amazedsaint

2

Tôi tin rằng theo mặc định, động cơ T4 có thể chỉ sử dụng 4.0, mặc dù tôi chắc chắn rằng mọi DLL bạn tham chiếu đều chính xác cho lỗi của bạn.

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