2016-09-13 4 views
7

エンティティフレームワークにT4クラスを使用している間に、生成されたすべての行に対して1つの新しい行を追加してクラスを生成する開発者がいくつかあります。私は、T4で生成されたファイルが他の開発者から生成されたファイルのように見えるように、これを変更する必要があるかどうかを疑問に思っています。私が話していることの例として、(特定の名前を削除しましたが、同じ* .ttファイルから生成された新しい行の数の違いを見ることができます)T4テンプレートが一部のPCで余分な新しい行を生成しています

更新:問題。ちょうどEF両方のPCがT4のカスタムツールとしてTextTemplatingFileGeneratorを使用していないだけでなく、他のT4テンプレートで発生する)私のPCから

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); 
    } 

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); 
} 

編集:

(ファイル内のおよそ同じテキスト。) マイファイル: My file

彼らのファイル: Their file

+0

Windows (CR LF)は、Visual Studioの正確な同じバージョンで彼らをしていますだけでなく、→エンティティに行くCRLFに問題に.ttファイルを変換するために使用されましたフレームワークのバージョン? – KSib

+0

はい、VS2015(2013も使用していましたが発生しました)、Entity Frameworkのバージョンはプロジェクトの一部であり、レポでも同じです。 – Thomas927

+0

ファイルを16進エディタで開き、スクリーンショットを投稿できますか?私はファイルの生の内容が改行、行送り、印刷不可能な文字などに関して何であるか知りたいのです。 – dazedandconfused

答えて

9

何@ ralf.w。この問題の解決策が出てきていました。問題のコンピュータのファイル.ttの行末はLFでした。これにより、変換ツールの実行時に余分な行末が生成されます。正しい行末はCRLFである必要があります。 .ttファイルの行末を変更すると、出力ファイルが正しく生成されました。私はGitの行末設定を現状のままチェックアウトするように変更し、そのままコミットしました。 This questionには、行末の設定の意味と変更可能な場所に関する情報があります。

Notepad ++は(私たちは多くのことを持っていませんでした。)EditEOL Conversion

関連する問題