2009-08-18 13 views
15

私はVSプロジェクトを持っています: 1. "template.tt"でTextTransformを実行してgenerated.cs " 2"を生成するビルド前アクション。 cs "をコンパイルするファイルの1つ(プロジェクトファイルのリスト)Visual StudioでT4変換とビルドオーダー

プロジェクトをビルドすると、ビルド前のアクションが実行され、generated.csは再作成されますが、VSは前の(ビルドプロセスの開始時にメモリにロードされていると思われます)

ビルドでnewlly生成されたcsファイル(ビルド前のアクションで生成されたもの)を使用するにはどうすればよいですか?

(私の状況では、テキスト変換入力は動的なので、設計時にはできません。)

ありがとうございました。

答えて

4

カスタムビルド前のアクションは必要ありません。プロジェクトに「.tt」ファイルを追加し、「カスタムツール」プロパティを「TextTemplatingFileGenerator」に設定します。 * .generated.csファイルがプロジェクトに追加されていることを確認することもできますが、VSがそれを処理すると思います。

+6

これは私にとってはうまくいかないようです。 Zvikaは、T4テンプレートが自分のプロジェクトが構築されるたびにその魔法を働かせたいと言っていたと思います。これも私が欲しいものです。 私はT4MVCをASP.NET MVC 3で使用していますが、たとえば、ビルドするプロジェクトを作成し、T4MVCで取得する新しいファイルを追加してプロジェクトを再構築すると、表示されませんT4MVCによって行われたはずの変更。 .ttファイルを右クリックし、Run Custom Toolを選択することで、アップデートを明示的に起動する必要があります。 –

+0

これは '.tt'ファイルを保存するときにのみ出力を生成します。 –

3

この問題の解決方法があります。 Oleg Sychには、ビルド時の作業の変換方法を詳しく説明する記事が掲載されています。ここで

はソースです:https://web.archive.org/web/20140116193428/http://www.olegsych.com/2010/04/understanding-t4-msbuild-integration/

は基本的に、あなたは自分のプロジェクトファイルにT4のビルドターゲットを含め、trueにTransformOnBuildプロパティを設定します。

ここでは、関連の抜粋です:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <PropertyGroup> 
    <TransformOnBuild>true</TransformOnBuild> 
    </PropertyGroup> 
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets" /> 

注Microsoft.TextTemplating.targetsファイルがMicrosoft.CSharp.targetsの後に含まなければならないことは。

+0

これはファイルを生成しますが、相対名前空間は省略します。どうすればこれを克服できますか? –

関連する問題