Получить значение аргумента из TextTransform.exe в шаблон.
-
10-07-2019 - |
Вопрос
Я не могу найти пример того, как использовать аргумент -a, когда я использую TextTransform.exe для генерации кода из шаблонов.В MSDN следующее описание аргумента -a:
«Определяет параметр, который процессор директивы может запросить как пара имен/значения.Директивный процессор и идентификатор являются необязательными.Это позволяет указать параметры для любого директивного процессора или любого экземпляра конкретного процессора директивы ».
В моем шаблоне мне нужен некоторый набор аргументов, например строка подключения и т. д.Моя идея заключалась в том, чтобы получить путь к файлу конфигурации с помощью аргумента -a.
С уважением Антон Кальчик
ОБНОВЛЯТЬ:Чтобы быть достаточно ясным, я хочу читать параметры прямо в шаблоне.
Решение
Набор инструментов преобразования текстовых шаблонов (T4) от Microsoft не очень хорошо поддерживается.Всего несколько примеров.Если вы хотите узнать больше, перейдите по ссылке Блог Олега Сыча.Т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
После генерации в сгенерированном файле должно быть:'некоторое значение'
Другие советы
Аргумент -a принимает значения в следующем формате:
<ProcessorName>!<DirectiveID>!<ParameterName>
Это также параметры ITextTemplatingEngineHost.ResolveParameterValue метод, который вам нужно вызвать, чтобы получить значение параметра в коде шаблона.