2010-05-09 27 views
6

Tôi không thể tìm ra điều này. Tại sao T4 không tìm được loại IEnumerable? Tôi đang sử dụng Visual Studio 2010. Và tôi chỉ hy vọng ai đó biết tại sao?Sự cố T4 khi biên dịch chuyển đổi

<#@ template debug="true" hostspecific="false" language="C#" #> 
<#@ assembly name="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" #> 
<#@ import namespace="System" #> 
<#@ import namespace="System.Data" #> 
<#@ import namespace="System.Data.SqlClient" #> 
<#@ output extension=".cs" #> 
public static class Tables 
{ 
    <# 

    var q = @" 
     SELECT 
      tbl.name 'table', 
      col.name 'column' 
     FROM 
      sys.tables tbl 
     INNER JOIN 
      sys.columns col ON col.object_id = tbl.object_id 
    "; 

    // var source = Execute(q); 

    #> 
} 
<#+ 
    static IEnumerable Execute(string cmdText) 
    { 
     using (var conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=t4build;Integrated Security=True;")) 
     { 
      conn.Open(); 

      var cmd = new SqlCommand(cmdText, conn); 

      using (var reader = cmd.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
       } 
      } 
     } 
    } 
#> 

Lỗi 2 Biên soạn chuyển đổi: Loại hoặc namespace tên 'IEnumerable' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội?) C: \ Projects \ T4BuildApp \ T4BuildApp \ TextTemplate1.tt 26 9

Trả lời

3

Có thể vì IEnumerable ở trong System.Collections.

+1

.... và John - bạn không nhập không gian tên 'System.Collections' vào mẫu của bạn –

+0

Ồ, làm thế nào tôi có thể không nhìn thấy điều này. Cảm ơn! Tôi phải đã bị mù trong một giờ hoặc lâu hơn về điều này ... –

6

Tôi cũng muốn giới thiệu đến referece #assembly tên = "System.Core" và #import "System.Linq" để bạn có được nhiều năng lượng hơn khi làm điều gì đó với IEnumerable

+1

Chúc mừng - đã có một vấn đề tương tự và tôi đã thiếu một ref lắp ráp: D –

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