2009-04-30 14 views
3

私はT4の基本的な原理を理解していると思いますが、私はそれを私の特定の状況に適用する方法を考え出すのに苦労しています。T4 Confusion

私は何らかのオブジェクトのリストを表示するアプリケーションを持っています。何か問題はありません。ユーザーがこれらのオブジェクトの1つ以上を選択して任意のテンプレートに送信できるようにします。テンプレートは、例えば、オブジェクトを記述するhtmlファイルや、何らかの方法でそれらを操作するためのpowershellスクリプトを生成することができます。

私が理解できないことは、選択したオブジェクトをカスタムホストに渡す方法です。

これらのオブジェクトをストレージから取得するために私自身のAPIと呼ばれる広範なttインクルードファイルを作成することができましたが、すでにスコープ内のオブジェクトのインスタンスを持っていて、出力。

私は私が私のホストにプロパティを追加し、私はこれらのプロパティを経由してオブジェクトを使用すると考えていたhostspecificの設定を使用して試してみましたが、私が得るすべてのシリアル化と、そのような程度の誤差である

...これは理にかなって願っています

もの。

これを行う方法の本当に良い例が素晴らしい:)

おかげ

答えて

3

おそらくこれarticleは、あなたの質問にお答えしますでしょう。 「スタンドアロンテンプレート」は最適なデザインオプションです。その他のオプションには、環境変数と外部ファイルがあります。しかし、カスタムホストを使用しないようにしたいと思っています(T4独自の独特の風味を持ち、他のT4ホストとの互換性がないと思わない限り)TextTransform.exeを使用してください。

+0

私はあなたのすべての聖書を読んだが、私はそれを逃したと思った。ビールはメールに入っています。乾杯! – Jonesie

+0

それは動作します! Yee ha!インポートの名前空間@ <#@テンプレート言語= "C#の" #> <#@出力拡張子=#」PS1" 。> <#: 私のホストは、テンプレート、私が持っている中で、論理データを設定するためにCallContextを使用しています= "System.Runtime.Remoting.Messaging" #> <#= Service.Url#> <#+ サービスサービス{ \t GET {サービスとしてCallContext.LogicalGetData( "サービス")を返します。 } \t } #> 私のカスタムホストは、サービスやその他のものに関連するインポートを追加します。 – Jonesie