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

StackOverflow https://stackoverflow.com/questions/1221651

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top