Получить значение аргумента из TextTransform.exe в шаблон - PullRequest
7 голосов
/ 03 августа 2009

Я не могу найти пример того, как я могу использовать аргумент -a, когда я использую TextTransform.exe для генерации кода из шаблонов. В MSDN приведено следующее описание аргумента -a:

"Определяет параметр, который является директивой процессор может запрашивать как пара имя / значение. Директива процессор и идентификатор необязательны. Это позволяет указывать параметры для любого директивного процессора или любого экземпляр конкретной директивы процессор. "

Мне нужен набор аргументов, например строка подключения и т. Д. В моем шаблоне. Моя идея состояла в том, чтобы получить путь к файлу конфигурации с помощью аргумента -a.

С уважением Антон Калчик

ОБНОВЛЕНИЕ: Для ясности, я хочу прочитать параметры непосредственно в шаблоне.

Ответы [ 2 ]

7 голосов
/ 16 сентября 2009

Набор инструментов преобразования текстовых шаблонов (T4) от Microsoft не очень хорошо поддерживается. Всего несколько примеров. Если вы хотите узнать больше, зайдите в блог Olegs Sychs . Т4 здесь очень глубоко объяснено.

После нескольких часов попыток получить параметры из TextTransform.exe в моем шаблоне я нашел решение:

Добавьте атрибут hostspecific="true" к элементу template следующим образом:

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

Позже в шаблоне вы можете позвонить ResolveParameterValue, как упомянул Олег.

Пример:

<#

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

#>

Вы называете генератор шаблонов так:

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

После генерации должен быть в сгенерированном файле: 'someValue'

1 голос
/ 08 сентября 2009

Аргумент -a принимает значения в следующем формате:

<ProcessorName>!<DirectiveID>!<ParameterName>

Это также параметры ITextTemplatingEngineHost.ResolveParameterValue метода, который необходимо вызвать для получения значения параметра в коде шаблона.

...