テンプレート ファイルをコードに変更するための Visual Studio 用の「カスタム ツール」があります。一貫性と移植性のために、Visual Studio の外でビルドするときに、MSBuild からこのテンプレート プロセッサを実行できるようにしたいと考えています。
Visual Studio は、ファイルの次のスニペットを作成します。
<!-- the template -->
<None Include="Template.in">
<Generator>Template Processor</Generator>
<LastGenOutput>Template.in.Designer.cs</LastGenOutput>
</None>
<!-- generated file -->
<Compile Include="Template.in.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Template.in</DependentUpon>
</Compile>
ここでの問題はTemplate.in
、が Studio によってのみ処理され、MsBuild によって処理されないため、Designer.cs
ファイルが古くなる可能性があることです。
直接使用できる既存の MSBuild タスクはありますIVsSingleFileGenerator
か (レジストリからその場所をロードすることを含む)、または手動でプロセッサを呼び出す必要がありますか (MSBuild タスクを自分で実装するか、プロセッサを適応させることによって)。
興味深いことに、MSDNのUsing MSBuildの記事には次のように書かれています。
単一ファイル ジェネレーターには設計時のみアクセスできますが、MSBuild タスクは設計時とビルド時に使用できます。したがって、最大限の柔軟性を得るには、MSBuild タスクを使用してコードを変換および生成します。詳細については、「プロジェクト アイテム (Visual Studio SDK)」を参照してください。
更新:この特定のカスタム ツールを msbuild タスクにハックしましたが、きれいではありません。私はまだよく維持された一般的なソリューションを好むでしょう。ブログにソースを載せました。