1

powershell を使用して .tt ファイルを処理しようとしています。本当に近いと思いますが、ビジュアルスタジオを使用しているときに存在しないpowershellから呼び出すとエラーが発生します。

Powershell スクリプト

function DoThing
{

  $inputfile = 'D:\source\62\test.tt'

  [Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualStudio.TextTemplating") | Out-Null
  [Reflection.Assembly]::LoadFile('D:\source\62\Builder.dll') | out-null  

  $host = New-Object ("CustomHost.CustomCmdLineHost") 
  // impl ITextTemplatingEngineHost


  $server = New-Object ("Microsoft.VisualStudio.TextTemplating.Engine") 

  $server.ProcessTemplate($inputfile, $host);

}

Simple.tt テンプレート

<#@ template language="C#" #>
<#@ output extension=".txt" #>

This content was generated from a template
in the year <#= DateTime.Now.Year.ToString() #>

Visual Studio から実行すると、.tt によってファイルが正常に生成されます

ただし、powershell から役に立たない「ErrorGeneratingOutput」を受け取ります

問題の要点は、powershell から使用するときに ITextTemplatingEngineHost を実装する方法だと思います。ここで提案を歓迎します。

ありがとう!

4

1 に答える 1

1

誰かが Microsoft の T4 エンジンの使い方について提案してくれるまで待つことができますが、個人的に言えば、Mono のオープン ソース実装を直接使用することを好みます。

https://github.com/mono/monodevelop/tree/master/main/src/addins/TextTemplating

Mono.TextTemplating と TextTransform をコンパイルすると、コマンド ライン ユーティリティ TextTransform.exe が得られます。

于 2012-04-21T07:34:29.930 に答える