2

次のコマンドを使用して、既存のテンプレート(MyTemplate.tt)にパラメーター(foo)を渡そうとします。

TextTransform.exe -a = foo!bar -o Output.txt MyTemplate.tt

MyTemplate.tt:

<#@ template language="C#" #>
<#@ import namespace="System.IO" #>

<#
  this.Write(foo);  
#>

パラメータ「foo」が存在しないため、このコマンドは失敗します。このパラメータを正しく渡すにはどうすればよいですか?

4

2 に答える 2

3

MonoDevelopのTextTransform.exeの引数は、ここに記載されているMicrosoftの引数と一致します。

残念ながら、これらのパラメーターはコード内の変数として公開されておらず、カスタムディレクティブプロセッサーの引数として意図されています。コードから直接アクセスするには、hostspecific="true"を介して設定してアクセスする必要がありますHost.ResolveParameterValue (paramName)

ただし、動的オブジェクトを使用して、テンプレートの基本クラスに実装IDynamicMetaObjectProviderBindGetMemberし、からパラメーターを解決するためにオーバーライドすることで、サンプルを機能させることができますHost.ResolveParameterValue

于 2013-02-05T20:11:23.210 に答える
0

おかげで、これは私にとってはうまくいきます:

TextTransform.exe -a = foo!bar -o Output.txt MyTemplate.tt

MyTemplate.tt:

<#@ template language="C#" hostspecific="true" #>
<# string temp = this.Host.ResolveParameterValue("", "", "foo");#>
<#
  this.Write(temp);  
#>

Output.txt:

bar

IDynamicMetaObjectProviderについても見ていきます。

于 2013-02-06T08:41:15.383 に答える