2011-01-24 10 views
16

Mam szablon T4 (mycode.tt), który generuje plik CS. Zwykle klikam prawym przyciskiem myszy plik tt i wybieram RunCustomTool, który wewnętrznie pobiera plik xml i generuje dla mnie kod. Teraz chcę uruchomić niestandardowe narzędzie przy użyciu aplikacji windows C#. Tak więc kliknięcie przycisku Chcę uruchomić narzędzie niestandardowe. Czy można uruchomić CustomTool z C#.Uruchamianie szablonu T4 przy użyciu C#

Edit:

mam 2 pliki TT i jeden z nich nie posiada kodzie pliku cs. Ale inny ma dołączony plik .cs i wywołuję metodę TransformText() drugiego pliku z pierwszego pliku .tt. Więc muszę wywołać pierwszy plik. Więc nie mogę użyć metody TransformText(). Czy istnieje sposób dynamicznego wywoływania pliku textTemplate?

Odpowiedz

7

Polecam wstępnie przetworzoną trasę w odpowiedzi powyżej @jb_.

Alternatywnie, jeśli chcesz, aby szablony były nadal edytowalne bez etapu kompilacji do użycia z niestandardową aplikacją C#, a aplikacja zostanie wdrożona tylko na komputerach wraz z programem Visual Studio, możesz napisać niestandardowy host.

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

17

Możesz to łatwo osiągnąć, korzystając z VS2010. Jeśli dodasz nowy plik do projektu, wybierz wstępnie przetworzony plik szablonu tekstowego. Możesz edytować szablon tak jak zwykle. Zamiast bezpośrednio generować dane wyjściowe, plik generuje normalnie generowany kod. Wiem, że to brzmi myląco. Ale to, co widzisz w pliku wyjściowym, to kod wygenerowany przez zestaw narzędzi do szablonów tekstowych, aby uzyskać dane wyjściowe (mniej więcej).

Oto krótki przykład obróbką szablonu tekstowego o nazwie "TestTemplate.tt" i jak można go używać w kodzie:

TT-file:

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

Kod:

using System; 
using System.Diagnostics; 

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

Dla istniejącego szablonu można zmienić niestandardowe narzędzia we właściwościach od 'TextTemplatingFileGenerator' na' TextTemplatingFilePreprocessor'. –

+0

W jaki sposób podajesz parametry? – Georg