Получить значение аргумента из TextTransform.exe в шаблон

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

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

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

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

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

2 ответа

Решение

Текстовый шаблон Transformation Toolkit(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'

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

<ProcessorName>!<DirectiveID>!<ParameterName>

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

Другие вопросы по тегам