在实体框架中使用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);
}
修改
答案 0 :(得分:22)
@ ralf.w。得到的是这个问题的解决方案。问题计算机上的.tt
文件中的行结尾为LF
,这会导致在转换工具运行时生成额外的行结尾。正确的行结尾应为CR
LF
。一旦我们更改了.tt
文件中的行结尾,就会正确生成输出文件。我还将Git中的行结束设置更改为按原样结帐,按原样提交。 This question有一些关于行结尾设置的含义以及可以更改它们的位置的信息。
Notepad ++用于将问题.tt
文件转换为CR
LF
(我们没有那么多。)转到Edit
→{{1 }} EOL Conversion