2016-09-13 24 views
7

T4 sınıflarını varlık çerçevesi için kullanırken, oluşturulan her satır için yeni bir satır ekleyerek sınıfları geliştiren birkaç geliştirici var. Bunun, T4 tarafından oluşturulan dosyaların diğer geliştiricilerin oluşturduğu dosyalar gibi görünmesi için değiştirilmesi gereken bir ayar olup olmadığını merak ediyorum. (. Kaldırıldı belirli adlar ancak aynı * .tt dosyadan oluşturulan yeni hatların sayısının farkı görmek mümkün olmalıdır)T4 Şablonu Bazı PC'lerde Ekstra Yeni Satır Oluşturuyor

(Güncelleme: konuyla ne bahsediyorum bir örnek olarak yanı diğer T4 şablonları ibaret değilim EF meydana Hem PC'ler T4 özel aracı olarak TextTemplatingFileGenerator kullanıyor)

T4 çıkışını benim PC'den:.. onların PC'den

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 çıkışı:

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

Düzenleme: (. Dosyasındaki Of kabaca aynı metin)

Dosyam: My file

Onların dosyası: Their file

+0

Windows (CR LF) Visual Studio tam aynı sürümüne onlar Are yanı sıra → Varlık git CRLF için sorunu .tt dosyalarını dönüştürmek için kullanıldı Çerçeve versiyonu – KSib

+0

Evet, VS 2015 (2013'ü kullanırken de gerçekleşti) ve Entity Framework sürümü projenin ve repo'nun bir parçasıydı, bu yüzden ikimiz için de aynı olmalıydı. – Thomas927

+0

Dosyayı bir hex editöründe açıp ekran görüntüsü gönderir misiniz? Dosyanın ham içeriğinin satır başı iadeleri, satır beslemeleri, basılmamış karteller vb. Ile ilgili ne olduğunu görmek beni çok heyecanlandırıyordu. – dazedandconfused

cevap

9

Ne @ ralf.w. Bu problemin çözümüydi. Sorun bilgisayarındaki .tt dosyalarındaki satır sonları, LF idi ve bu, dönüştürme aracı çalıştırıldığında fazladan satır sonlarının oluşturulmasına neden oluyor. Doğru satır sonları CRLF olmalıdır. Satır sonlarını .tt dosyalarında değiştirdiğimizde, çıktı dosyaları düzgün bir şekilde üretildi. Ayrıca, Git'teki satır bitiş ayarlarını, olduğu gibi yapma seçeneğinin yanı sıra ödeme olarak değiştirdim. This question, satır sonu ayarlarının ne anlama geldiği ve değiştirilebileceği yerler hakkında bazı bilgilere sahiptir.

Notepad ++ (birçok olduğunu yoktu.) EditEOL Conversion