是否有任何命令可以轻松控制T4模板输出空白?我得到了一些过度的标签。我以为我记得一种控制模板空白的方法......
答案 0 :(得分:5)
PushIndent,PopIndent,ClearIndent http://msdn.microsoft.com/en-us/library/bb126474.aspx
请勿格式化模板以提高可读性。您在控制块之外的任何空格都将在输出中结束
for(int i=0; i < 10; i++)
{
#>
Hello
<#
}
最终将成为
Hello
Hello
Hello
Hello
Hello
Hello
答案 1 :(得分:2)
可能没有很好的解决方法,这是T4引擎本身的一个问题,IMO。但是,如果您在保留指令嵌套的同时尝试减少输出中的前导选项卡/空格,则可以执行以下操作。
<强>之前强>
<# for (...) { #>
<# if (...) { #>
SomeText
<# } #>
<# } #>
<强>后强>
<# for (...) { #>
<# if (...) { #>
SomeText
<# } #>
<# } #>
E.g。在第0列开始你的指令,在指令本身内缩进!除此之外,您可能需要修剪额外的行:
private void TrimExtraneousLineBreaksAfterCommentsFromGeneratedFile(ref string fileText)
{
Regex regex = new Regex(@"(//.+?)(?:\r?\n){2,}");
// Replace multiple coniguous line breaks, after a comment, with a single line break.
fileText = regex.Replace(fileText, "\r\n");
}
private void TrimExtraneousLineBreaksFromGeneratedFile(ref string fileText)
{
Regex regex = new Regex(@"\r?\n(?:\s*?\r?\n)+");
// Replace multiple coniguous line breaks with 2 line breaks.
fileText = regex.Replace(fileText, "\r\n\r\n");
// Remove spaces/line breaks from the file.
fileText = fileText.Trim();
}
YMMV
答案 2 :(得分:2)
只是因为有人正在寻找使用writeLine方法添加标签。逃脱角色有效。
<#
for(int i=0; i < 10; i++)
{
this.WriteLine("\tHello");
}
#>