簡體   English   中英

T4保存模板錯誤

[英]T4 save template error

我已經創建了T4模板,保存后出現以下錯誤:可能是問題所在

該代碼是,並且錯誤是由於程序集c:\\ net \\ ex ....

<#@ template language="C#" debug="True" hostspecific="True" #>
<#@ output extension="generated.cs" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Data.SqlServerCe" #>
<#@ assembly name="System.Data.Entity" #>

<#@ assembly name="C:\Net\Excesrise\Final\CodeGenWitht4Templates\bin\Debug\CodeGenWithT4Templates.exe" #>

<#@ assembly name="System.xml" #>

<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlServerCe" #>
<#@ import namespace="System.Data.Entity" #>
using System;

namespace Demo.Entities 
{    
  <#


                    var connectionString=@"data source=C:\Net\Excesrise\Final\CodeGenWitht4Templates\bin\Debug\CodeGenWithT4Templates.exe";

                        SqlCeConnection conn = new SqlCeConnection(connectionString);
            conn.Open(); 
            System.Data.DataTable schema = conn.GetSchema("TABLES"); 
            string selectQuery = "select * from @tableName"; 
            var command = new SqlCeCommand(selectQuery,conn); 
            var ad = new SqlCeDataAdapter(command); 
            System.Data.DataSet ds = new DataSet(); 
            string currentTableName = String.Empty;

                        //PushIndent("          ");
            foreach(System.Data.DataRow row in schema.Rows) 
            { 
                currentTableName = row["TABLE_NAME"].ToString();
                                currentTableName = currentTableName = currentTableName.Replace(" ", "");
                                currentTableName = currentTableName.Replace("[", "");
                                currentTableName = currentTableName.Replace("]", "");
            #> 
public class <#= currentTableName #>   {
<#                 
    command.CommandText = selectQuery.Replace("@tableName",row["TABLE_NAME"].ToString()); 
    ad.FillSchema(ds, SchemaType.Mapped, row["TABLE_NAME"].ToString());

    foreach (DataColumn dc in ds.Tables[0].Columns)
    {
        var typeName = dc.DataType.Name;
        var propName = dc.ColumnName.Replace(dc.ColumnName[0].ToString(), dc.ColumnName[0].ToString().ToLower());
      propName = propName.Replace(" ", "");

        WriteLine ( "  public " + typeName + " " + propName + " {get;set;}" );                 
    }                 #>
 }                

      <#    
      }  #>  
}

錯誤1:

名稱空間不能直接包含成員,例如字段或方法C:\\ Net \\ Excesrise \\ Final \\ CodeGenWitht4Templates \\ ClassesFromDB.genic.cs

錯誤2

編譯轉換:找不到元數據文件'C:\\ Net \\ Excesrise \\ Final \\ CodeGenWitht4Templates \\ bin \\ Debug \\ CodeGenWithT4Templates.exe'C:\\ Net \\ Excesrise \\ Final \\ CodeGenWitht4Templates \\ ClassesFromDB.tt 1 1 CodeGenWithT4Templates

我猜錯誤的原因

<#@ assembly name="C:\Net\Excesrise\Final\CodeGenWitht4Templates\bin\Debug\CodeGenWithT4Templates.exe" #>

....

第二個錯誤:您不需要引用自己的exe 因為

  1. 程序集指令是針對程序集的,不是可執行文件
  2. 您僅使用標准類
  3. 此exe是使用T4的輸出構建的,遞歸嗎?)

另外到本地數據庫的連接字符串不是您的exe,就像

 conn = new SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'");

您的其余代碼看起來不錯。 您的第一個錯誤是來自錯誤的生成文件,因為它是這樣的

ErrorGeneratingOutput

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM