9

T4 テンプレートがビルド サーバー上で変換されるプロセスをセットアップしようとしています (Visual Studio がそこにインストールされていません)。

私はすべてのオンライン リファレンスを読みましたが、これを行う方法を示す明確なソースを入手できませんでした。

具体的には、ここに私が遭遇した2つの問題があります:

  • TextTransform.exe は、見つからない DLL に関するエラーをスローします。

C:\TeamCity\buildAgent\work\AppSettings.tt(0,0): エラー CS0006: 変換のコンパイル: メタデータ ファイル 'Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ' が見つかりませんでした

gacutilを使用して DLL ファイルを登録すると、この問題は修正されますが、この手順は避けたいと思います。

  • Host.ResolvePath(string)メソッドを使用しても、Visual Studio の外部で実行すると値が返されません。

この方法は、テンプレートがデータ ソースとして使用する .txt ファイルへのフル パスを決定するのに役立ちます。これがないと、このファイルはビルド サーバー上で見つかりません。

これを実行するには、どんな助けでも大歓迎です。

編集: MS CONNECT の問題を開きました: https://connect.microsoft.com/VisualStudio/feedback/details/744137/texttransform-exe-does-not-work-without-vs2010-installed

私がチェックした参照:

4

3 に答える 3

2

問題は、ResolvePathなどのホスト固有の機能を使用していることだと思います。

私が試みる1つの方法は、テンプレートがResolvePathを使用せず、代わりに既知の場所からの相対パスに依存することを確認することです。

このよく知られた場所は、次の人が知ることができます。

1. Convention
2. Environment variable
3. Registry
4. SQL Server
5. Web Service
6. And others

開発者に環境変数の設定を強制するというアイデアが気に入らない場合は、可能な場合は環境変数を使用する「スマート」なresolvepathを作成することを検討します。それ以外の場合は、Host.ResolvePathに依存します。

お役に立てれば

于 2012-05-24T18:08:44.133 に答える
1

Microsoft TextTransform.exe を捨てて、外部依存関係のない MonoDevelop に同梱されている無料のものを使用してください。

ここを参照してください: Visual Studio なしの T4?

于 2012-05-25T18:15:51.943 に答える