17

以下を含む VS プロジェクトがあります。

  1. 生成する上で実行TextTransformされるビルド前のアクションtemplate.ttgenerated.cs

  2. generated.csコンパイルするファイルの 1 つとしてリストされている (つまり、プロジェクト ファイルのリストにある)

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

ビルドで新しいバージョンgenerated.cs(ビルド前のアクションで生成されたもの) を使用するにはどうすればよいですか? ビルド順序を強制する方法は?

テキスト変換入力は動的であるため、設計時に実行できないことに注意してください。

4

2 に答える 2

4

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

于 2010-01-05T17:34:34.777 に答える
4

この問題に対する解決策が今あります!Oleg Sych が彼のブログに、ビルド時の変換を機能させる方法を詳しく説明した投稿を掲載しています。

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

基本的には、T4 ビルド ターゲットをプロジェクト ファイルに含めて、TransformOnBuild プロパティを true に設定するだけです。

関連する抜粋は次のとおりです。

<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 の後に含める必要があることに注意してください。

于 2014-02-17T03:41:14.340 に答える