使用t4模板进行了错误的缩进

时间:2013-12-12 08:17:03

标签: c# code-generation t4

我目前正在使用T4模板,我注意到有时代码没有正确缩进,我该如何避免?

例如我在模板中有这个代码

}
    <# } #>
    this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

并且在生成的类中它就像

}
                 this.cmbDecisionList.Dat = dataSource;
      this.btnDec.Enabled = dataSource.Count > 0;
}

2 个答案:

答案 0 :(得分:32)

请允许我通过用点替换空格来说明您的问题。

}
....<# } #>
....this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

并且在生成的类中它就像

}
........this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

现在,让我们删除前面的点。

}
<# } #>
....this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

并且在生成的类中它就像

}
....this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

答案 1 :(得分:8)

我认为你努力获得可读的生成代码是件好事。我们会坐下来尝试偶尔调试生成的代码,这样如果它很容易就会很好(我们永远不会编辑生成的代码)。

我采用了一种模式,我可能会牺牲模板的一些可读性来获得生成的代码可读性。

Generated code
<#
    T4 statements
#>
Generated code

IE#&gt;总是出现在换行符之后,并在之后立即添加换行符。

然后您的代码将更改为:

}
<# 
    } 
#>
    this.cmbDecisionList.Dat = dataSource;
    this.btnDec.Enabled = dataSource.Count > 0;
}

这样生成的代码往往会按预期格式化。

这可能不是保留格式的唯一方法,但它是我使用的格式。

希望这有帮助。