2011-01-24 23 views
16

私はcsファイルを生成するT4テンプレート(mycode.tt)を持っています。私は通常、ttファイルを右クリックし、RunCustomToolを選択します。これは内部的にXMLファイルを受け取り、私のためのコードを生成します。今私はC#のWindowsアプリケーションを使用してカスタムツールを実行したいです。だからボタンのonclick私はカスタムツールを実行したい。 c#からCustomToolを実行することは可能ですか?C#を使用してT4テンプレートを実行

編集:

私は2つのTTファイルを持っており、そのうちの一つは、分離コードのCSファイルを持っていません。しかし別のものには.csファイルが添付されており、最初の.ttファイルから2番目のファイルのTransformText()メソッドを呼び出しています。だから、最初のファイルを呼び出す必要があります。私はTransformText()メソッドを使用することはできません。 textTemplateファイルを動的に呼び出す方法はありますか?

答えて

7

上記のように@jb_で前処理されたルートをお勧めします。

カスタムC#アプリケーションで使用するためのコンパイルステップを使用せずにテンプレートを編集できる必要があり、アプリケーションがVisual Studioとともにマシンにのみデプロイされる場合は、カスタムホストを作成できます。あなたはTextTemplatingFilePreprocessor` `へ` TextTemplatingFileGenerator`からプロパティでカスタムツールを変更することができ、既存のテンプレートについては

http://msdn.microsoft.com/en-us/library/bb126519.aspx

17

あなたはVS2010を使用しているときに簡単にそれを達成できます。プロジェクトに新しいファイルを追加する場合は、前処理されたテキストテンプレートファイルを選択します。通常どおりテンプレートを編集することができます。直接出力を生成する代わりに、ファイルは正常に生成されたコードを生成します。私はそれが混乱しているように聞こえる。しかし、あなたの出力ファイルには、あなたの出力を得るためにテキストテンプレートツールキットによって生成されたコードがあります。

これは、前処理されたテキスト "TestTemplate.tt" という名前のテンプレートとどのようにあなたのコードでそれを使用しないの短い例である:TT-ファイル

<#@ template language="C#" #> 
Some output. 

コード:

using System; 
using System.Diagnostics; 

namespace Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      TestTemplate testTemplate = new TestTemplate(); 
      Debug.Print(testTemplate.TransformText()); 
     } 
    } 
} 
+5

。 –

+0

どのようにパラメータを入力しますか? – Georg