10

テンプレート ファイルをコードに変更するための 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 タスクにハックしましたが、きれいではありません。私はまだよく維持された一般的なソリューションを好むでしょう。ブログにソースを載せました。

4

1 に答える 1