T4コード生成で小さな問題が発生しました。T4生成出力ファイルに書き込まれる#line指示文を無効にする方法
私はT4テンプレートを別々のファイルに分割し、さまざまなディレクトリに配置しました。これを行って、コード生成の一部を複数のプロジェクトで再利用することができます。モデル生成、リポジトリ生成、サービス生成には、すべてEntityGeneration.ttのコアファイルが含まれています。
残念ながら、TextTemplatingがネストされたインクルードを解決すると、生成された.csファイルに長い#lineプリプロセッサディレクティブが作成され、すべての相対パスが最低レベルのインクルードファイルに結合されます。
残念ながら、このパスは相対パスで構築されているため、実際には最大パス長(Windows 7)を超えているため、不必要に長くなります。私はこれらのディレクティブは、生成されたコードファイルに書き込まれて無効にすることができますどのように、
#line 3 "C:\VS2010\AlbatrossTravelGroup\ASC\AlbatrossTravelGroup.ASC.BusinessRules\Services\Contracts\..\..\..\..\AlbatrossTravelGroup.BusinessRules\Services\Contracts\..\..\..\AlbatrossTravelGroup.Models\Repositories\Contracts\..\..\../AlbatrossTravelGroup.Common/CodeGeneration.tt"
私の質問はこれです:
ここでは断層の行は、あなたが興味を持っている場合には、生成されたコードからでしょうか?それに失敗した場合、ファイル構造を変更せずにこの問題を回避するにはどうすればよいですか?
現在のところ、私は一時的な解決策として、 "CodeGeneration"というフォルダを作成して、このフォルダ内のT4ファイルにシンボリックリンクを作成します。次に、相対パスで他のT4ファイルを含む各T4ファイルの代わりに、ファイル名だけを使用します。次に、これらのT4テンプレートを使用したい最終的な場所で、 "CodeGeneration"ディレクトリへの相対パスを使用します。これにより、相対パスが大幅に少なくなるため、パス長が大幅に短縮されます。もし誰かが完全な説明を望むなら、私は要求があれば答えを掲示するでしょう:) – Lukazoid
私の一時的な解決策は壊れました。なぜビジュアルスタジオが単にファイルの解決に失敗し始めたのか分かりません。最後に、レジストリを使用してttインクルードディレクトリを指定する必要がありますが、これは理想的ではありませんが、動作する唯一のもののようです。 – Lukazoid
あなたはVSマクロソリューション[ここ](http://stackoverflow.com/questions/3506525/t4-preprocessed-template-debugging-not-working-visual-studio-2010-rtm/7505247#7505247)のようなものを試してみるかもしれません。 )。 – BitMask777