TextTransform.exeからテンプレートに引数値を取得します
-
10-07-2019 - |
質問
TextTransform.exeを使用してテンプレートからコードを生成するときに、引数-aを使用する方法の例を見つけることができません。 MSDN には、引数-a:
の説明があります"ディレクティブを指定するパラメーターを指定します プロセッサは 名前/値のペア。ディレクティブ プロセッサと識別子はオプションです。 これにより、パラメーターを指定できます ディレクティブプロセッサまたは 特定のディレクティブのインスタンス プロセッサ。"
テンプレートには、接続文字列などの引数のセットが必要です。私のアイデアは、引数-aを使用して構成ファイルへのパスを取得することでした。
よろしく アントン・カルチク
更新:明確にするために、テンプレートで直接パラメーターを読み取りたい。
解決
Text Template Transformation Toolkit(T4)は、Microsoftからはあまりサポートされていません。ほんの数例。詳細については、 Olegs Sychsブログをご覧ください。 T4はここで非常に深く説明されています。
テンプレートのTextTransform.exeからパラメーターを取得しようとして数時間後、解決策を見つけました:
hostspecific =" true"
属性を template
要素に次のように追加します。
<#@ template language="C#v3.5" hostspecific="true"#>
テンプレートの後で、Olegが言及したように 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 メソッド。テンプレートコードでパラメーター値を取得するために呼び出す必要があります。