Шаблон T4 создает дополнительные новые линии на некоторых ПК

При использовании классов T4 для фреймворка сущности существует несколько разработчиков, которые генерируют классы с одной дополнительной новой строкой для каждой сгенерированной строки. Мне интересно, если это какой-то параметр, который нужно изменить, чтобы их сгенерированные файлы T4 выглядели как сгенерированные файлы из других разработчиков. В качестве примера того, о чем я говорю: (удалены конкретные имена, но вы должны увидеть разницу в количестве новых строк, сгенерированных из одного и того же файла *.tt.)

(Обновление:) Проблема возникает и в других T4-шаблонах, а не только в EF. Оба компьютера используют TextTemplatingFileGenerator как настраиваемый инструмент T4.)

Выход 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 выводится со своего ПК:

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

Edit:

(Примерно тот же текст в файле.) Мой файл: Мой файл

Их файл: Их файл

Ответ 1

Что @ralf.w. было решение этой проблемы. Окончания строк в файлах .tt на проблемном компьютере были LF, и это приводит к созданию дополнительных строк, когда инструмент преобразования работает. Правильные окончания строк должны быть CR LF. Как только мы изменили окончание строки в файлах .tt, выходные файлы были сгенерированы должным образом. Я также изменил параметры завершения строки в Git, чтобы проверить как-есть, зафиксировать как есть. Этот вопрос содержит некоторую информацию о том, что означает параметры окончания строки и где они могут быть изменены.

Notepad ++ был использован для преобразования проблемных файлов .tt в CR LF (у нас их было не так много.) Перейдите к EditEOL ConversionWindows (CR LF)