T4模板正在某些PC上生成额外的新行

时间:2016-09-13 16:31:00

标签: c# t4

在实体框架中使用T4类时,有几个开发人员为每个生成的行生成一个额外的新行。我想知道这是否是某种需要更改的设置,以便他们的T4生成的文件看起来像其他开发人员生成的文件。作为我所谈论的一个例子:(删除了特定的名称,但你应该能够看到从同一个* .tt文件生成的新行数的差异。)

更新:此问题也出现在其他T4模板中,而不仅仅是EF。两台PC都使用 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);
    }

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

修改

(文件中大致相同的文字。) 我的档案: My file

他们的档案: Their file

1 个答案:

答案 0 :(得分:22)

@ ralf.w。得到的是这个问题的解决方案。问题计算机上的.tt文件中的行结尾为LF,这会导致在转换工具运行时生成额外的行结尾。正确的行结尾应为CR LF。一旦我们更改了.tt文件中的行结尾,就会正确生成输出文件。我还将Git中的行结束设置更改为按原样结帐,按原样提交。 This question有一些关于行结尾设置的含义以及可以更改它们的位置的信息。

Notepad ++用于将问题.tt文件转换为CR LF(我们没有那么多。)转到Edit→{{1 }} EOL Conversion