2016-09-13 72 views
7

使用T4類作爲實體框架時,有幾個開發人員爲生成的每一行生成一個額外的新行。我想知道這是否是需要改變的某種設置,以使T4生成的文件看起來像其他開發人員生成的文件。作爲我正在談論的一個示例:(刪除特定名稱,但應該能夠看到從相同* .tt文件生成的新行數的差異)。T4模板在某些PC上生成額外的新行

更新:問題發生在其他T4模板爲好,不只是EF兩臺計算機都使用TextTemplatingFileGenerator爲T4自定義工具)

T4輸出從我的電腦:。從他們的PC

public virtual DbSet<GeneratedObject1> GeneratedObject1 { get; set; } 
    public virtual DbSet<GeneratedObject2> GeneratedObject2 { get; set; } 

    public virtual int SomeMethod1(Nullable<int> inParameter) 
    { 
     var localParameter = inParameter.HasValue ? 
      new ObjectParameter("SomePropertyName", inParameter) : 
      new ObjectParameter("SomePropertyName", typeof(int)); 

     return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SomeMethod1", localParameter); 
    } 

    public virtual int SomeMethod2(Nullable<int> inParameter) 
    { 
     var localParameter = inParameter.HasValue ? 
      new ObjectParameter("SomePropertyName", inParameter) : 
      new ObjectParameter("SomePropertyName", typeof(int)); 

     return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SomeMethod2", localParameter); 
    } 

T4輸出:

public virtual DbSet<GeneratedObject1> GeneratedObject1 { get; set; } 

public virtual DbSet<GeneratedObject2> GeneratedObject2 { get; set; } 


public virtual int SomeMethod1(Nullable<int> inParameter) 
{ 

    var localParameter = inParameter.HasValue ? 
     new ObjectParameter("SomePropertyName", inParameter) : 
     new ObjectParameter("SomePropertyName", typeof(int)); 


    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SomeMethod1", localParameter); 
} 


public virtual int SomeMethod2(Nullable<int> inParameter) 
{ 

    var localParameter = inParameter.HasValue ? 
     new ObjectParameter("SomePropertyName", inParameter) : 
     new ObjectParameter("SomePropertyName", typeof(int)); 


    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SomeMethod2", localParameter); 
} 

編輯:(大致相同文件中的文本)

我的文件: My file

他們的文件: Their file

+0

他們是否確切的同一版本的Visual Studio以及實體框架版本? – KSib

+0

是的,VS 2015(我們也在使用2013年的時候發生過),實體框架版本是該項目的一部分,在回購中,所以它對我們兩個應該都是一樣的。 – Thomas927

+0

你能在十六進制編輯器中打開文件併發布截圖嗎?我會很好奇,看看文件的原始內容是什麼關於回車,換行,不可打印的字符等。 – dazedandconfused

回答

9

什麼@ ralf.w。正在解決這個問題。問題計算機上的.tt文件中的行尾數爲LF,這會導致在轉換工具運行時生成額外的行結束符。正確的行尾應該是CRLF。一旦我們更改了.tt文件中的行結束符後,輸出文件就會正確生成。我還將Git中的行結束設置更改爲按原樣結算,按原樣提交。 This question有一些關於行結束設置意味着什麼以及它們可以改變的信息。

記事本++使用的問題.tt文件轉換爲CRLF(我們沒有那麼多。)轉到EditEOL ConversionWindows (CR LF)