18

csファイルを生成するT4テンプレート(mycode.tt)があります。私は通常、ttファイルを右クリックして、内部でxmlファイルを取得してコードを生成するRunCustomToolを選択します。ここで、ac#windowsアプリケーションを使用してカスタムツールを実行したいと思います。したがって、ボタンをクリックすると、カスタムツールを実行したいと思います。C#からCustomToolを実行することは可能ですか?

編集:

2つのttファイルがあり、そのうちの1つにコードビハインドcsファイルがありません。しかし、別のファイルには.csファイルが添付されており、最初の.ttファイルから2番目のファイルのTransformText()メソッドを呼び出しています。したがって、最初のファイルを呼び出す必要があります。したがって、TransformText()メソッドを使用できません。textTemplateファイルを動的に呼び出す方法はありますか?

4

2 に答える 2

18

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());
        }
    }
}
于 2011-01-24T11:57:13.230 に答える
7

上記の@jb_の回答に従って、前処理されたルートをお勧めします。

別の方法として、カスタムC#アプリケーションで使用するためのコンパイル手順なしでテンプレートを編集可能にする必要があり、アプリケーションがVisual Studioと一緒のマシンにのみ展開される場合は、カスタムホストを作成できます。

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

于 2011-01-25T01:49:36.847 に答える