いくつかのコード生成テンプレートをチームの自動ビルド プロセスに接続しようとしています。私たちの SCM チームは、ビルド マシンに Visual Studio を使用することを望んでいません (私はこれについて議論するのに苦労しています)。
Visual Studio を使用せずに T4 エンジンをインストールする方法はありますか?
MonoDevelop IDE 用の T4 エンジンのクリーンなリバース エンジニアリング実装を作成しました。これはオープンソースであり、寛大な MIT/X11 ライセンスの下でライセンスされているため、エンジンをアプリに自由に組み込んだり、再配布したりできます。また、dotnet グローバル ツールとして利用できる TextTransform.exe コマンド ライン ツールの実装と、エンジンのホスティングを支援する Mono.TextTemplating 名前空間のいくつかの API もあります。
実際にコードを生成しているわけではありません... Sandcastle スクリプトを生成していて、それをビルド サーバー上で確実に実行したいと考えています。ドキュメントの生成方法を形作る一連のカスタム属性を作成してコードを装飾するというアプローチをとっています。したがって、これらの属性のアセンブリを反映する .tt ファイルのセットがあり、Sandcastle の入力ファイル (.shfb) を生成します。カスタム ツールを使用することもできましたが、T4 がうまく適合しました。
とにかく... Visual Studio なしで TextTransform.exe を実行できることを確認しました。必要なのは、存在する Microsoft.VisualStudio.TextTemplating.dll だけです。新しい VM を作成し、.NET 3.5 をインストールして、以下をファイル システムにコピーしました。
Test.tt は次のようになります。
<#@ template language="C#3.5" debug="true" hostspecific="true" #>
<#@ assembly name="System.Xml" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Collections"#>
<#@ import namespace="System.Collections.Generic"#>
<#@ import namespace="System.Xml" #>
<#@ output extension=".cs" #>
テスト: <#=System.DateTime.Now.ToString()#>....
VM から次のように Test.tt を実行しました。
C:\TextTransform.exe Test.tt
そして Test.cs が作成されました
テスト: 6/10/2009 5:33:32 PM....
勝利!!!!
最も困難な部分は、Microsoft.VisualStudio.TextTemplating.dll を見つけることでした。FileMon を起動し、Visual Studio を搭載したボックスでテンプレートを実行する必要がありました。次に FileMon は、TextTransform.exe がどこからファイルを読み込んでいるかを教えてくれました。これはいくつかの場所にある可能性がありますが、GAC の C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.TextTemplating.dll で見つけました。Windows エクスプローラーを使用してその場所を参照するには、次のような subst を作成する必要がありました。
subst X: C:\Windows\assembly
次に、X:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating\9.0.0.0__b03f5f7f11d50a3a\ を参照して、dll をコピーします。
とにかく...マニッシュなアイデアをありがとう。うまくいけば、これはいつか他の貧しい魂を助けるでしょう:)
だから、これは私が採用することになったアプローチです:
Visual Studio 2010 sp1を備えた開発マシンとビルドマシン(msbuildを使用)があります。
干し草プレストあなたは行ってもいいはずです。
参考文献:
試したことはありませんが、コマンド ライン ツールを使用してビルド サーバーにドロップし、ビルド前/ビルド中にテンプレートを変換できると思います。
私の理解では、Visual Studio をインストールする必要があります。なぜ流れに逆らって泳ぐのですか?ビルド時ではなく設計時にコードを生成することを検討したことがありますか?
12の場合、コピーするだけです
C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\12.0