t4模板的缩进错误



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

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

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

现在,让我们去掉前面的点。

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

在生成的类中,它就像

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

我认为您努力获得可读的生成代码是件好事。我们偶尔会坐下来试着调试生成的代码,所以如果它看起来很容易,那就很好了(因为我们从不编辑生成的代码)。

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

Generated code
<#
    T4 statements
#>
Generated code

IE#>总是出现在换行符之后,并且换行符会立即添加。

然后您的代码将被更改为:

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

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

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

希望这能有所帮助。

最新更新