代码之家  ›  专栏  ›  技术社区  ›  John Leidegren

T4编译转换时出错

  •  6
  • John Leidegren  · 技术社区  · 16 年前

    我搞不懂这个。为什么T4找不到 IEnumerable 类型?我用的是visualstudio2010,希望有人知道为什么?

    <#@ 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())
                    {
                    }
                }
            }
        }
    #>
    

    编译转换时出现错误2:找不到类型或命名空间名称“IEnumerable”(是否缺少using指令或程序集引用?)

    2 回复  |  直到 16 年前
        1
  •  3
  •   Femaref    16 年前

    可能是因为IEnumerable在 System.Collections

        2
  •  6
  •   Tim Fischer    15 年前

    我还建议您参考#assembly name=“System.Core”和#import“System.Linq”,这样在使用IEnumerable执行某些操作时可以获得更多的功能