2013-12-12 21 views
16

現在T4テンプレートを使用していますが、コードが正しくインデントされていないことがあることに気付きました。例えばt4テンプレートのインデントが間違っています

私はテンプレート

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

にこのコードを持っており、それが

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

ようなものだ生成されたクラスで、私は通常、その中で私のT4テンプレートより醜いと削除空白を作ることによって、それを回避。 :) –

+0

はい、それは理解するのが難しいです... –

+1

通常、生成されたコードは読まれることを意図していませんが、自動的に生成されたとしても、見栄えの良いコードを作成したいと考えています。 T4テンプレートを変更するだけでなく、出力ファイルの "編集"> "詳細"メニューで "書類の書式"オプションを使用することもできます。そして、私が知る限り、T4 Editorはコード生成時に "Format output"オプションを持っています。 – Nico

答えて

31

空白をドットで置き換えて問題を説明することができます。

} 
....<# } #> 
....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; 
} 
+4

私はこの問題に対する解決策のそのような単純ではあるが正確な記述の目の前で、私はほとんど泣くことができました。ありがとうございました。 – stvn

8

ようなものだ生成されたクラスで、私はそれはあなたが読める生成されたコードのために努力することは良いことだと思います。私たちは座って、生成されたコードを時折デバッグしようとします。それが目に見えやすい場合(生成されたコードを決して編集しないでください)、それは良いことです。

私はテンプレートの読みやすさを犠牲にして、コードの可読性を向上させるパターンを採用しました。

Generated code 
<# 
    T4 statements 
#> 
Generated code 

IE#は常に改行の後に表示され、改行が後に追加されます。

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

生成されたコードが意図したとおりにフォーマットされる傾向にその方法を:

あなたのコードは、その後に変更されるだろう。

フォーマットを意図したとおりに保持するには、おそらく唯一の方法ではありませんが、それは私が使用するものです。

これが役に立ちます。

関連する問題