Получить значение аргумента из 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, который необходимо вызвать для получения значения параметра в коде шаблона.