2009-08-03 14 views
7

Nie mogę znaleźć przykładowego sposobu użycia argumentu -a, gdy używam TextTransform.exe do generowania kodu z szablonów. W MSDN jest następujący opis -a argumentu..Uzyskaj wartość argumentu z TextTransform.exe do szablonu

„określa się parametr procesor dyrektywy może zapytać jako nazwa pary/wartość Procesor dyrektywy oraz identyfikator opcjonalne Pozwala to na parametry należy podać dla dowolnego procesora dyrektywy lub dowolnej instancji dla konkretnej dyrektywy procesor. "

Potrzebuję zestawu argumentów, takich jak ciąg połączenia i tak dalej w moim szablonie. Moim pomysłem było uzyskanie ścieżki do pliku konfiguracyjnego za pomocą argumentu -a.

Pozdrowienia Anton Kalcik

UPDATE: Aby być na tyle jasne, chcę odczytać parametry bezpośrednie w szablonie.

Odpowiedz

7

Szablon tekstowy Transformation Toolkit (T4) firmy Microsoft nie jest zbyt dobrze obsługiwany. Tylko kilka przykładów. Jeśli chcesz dowiedzieć się więcej, przejdź do: Olegs Sychs blog. T4 jest tutaj bardzo głęboko wyjaśniony.

Po godzin do próby uzyskania parametrów z TextTransform.exe w moim szablonu znalazłem rozwiązanie:

Dodaj hostspecific="true" przypisują template elementu następująco:

<#@ template language="C#v3.5" hostspecific="true"#> 

Później w szablonie można zadzwonić ResolveParameterValue jak wspomniał Oleg.

Przykład:

<# 

string parameterTest = Host.ResolveParameterValue(null, null, "someKey"); 
WriteLine(parameterTest); 

#> 

zadzwonić szablon generatora tak:

"C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe" -a !!someKey!someValue 

Po wygenerowaniu powinny być w generowanym pliku: 'SomeValue'

+6

W VS2010 przekazanie wartości null lub pustego łańcucha do jednego z dwóch pierwszych parametrów 'Host.ResolveParameterValue (null, null," someKey ")' powoduje argument zerowy wyjątek. – CodingWithSpike

+0

Dokumentacja [tutaj] (http://msdn.microsoft.com/en-us/library/bb126245.aspx) wyjaśnia również to samo rozwiązanie. – LuddyPants

1

-a Argument przyjmuje wartości w następującym formacie:

<ProcessorName>!<DirectiveID>!<ParameterName> 

Są to również parametry ITextTemplatingEngineHost.ResolveParameterValue metody, które trzeba zadzwonić w celu uzyskania wartości parametru w kodzie szablonu.

+1

Witam Olega, dziękuję za odpowiedź. Czy masz na myśli możliwość wywoływania parametru ResolveParameterValue w pliku * .tt? Co należy ustawić dla parametru directiveId i processorName? Czy możesz podać przykład? Pozdrawiam Anton Kalcik –

Powiązane problemy