ビルドプロセスに複雑さが生じることを恐れて、ビルドプロセスの一部として生成されたコードの使用を延期しました。
ビルド時に生成されたコードをアプリに統合する簡単な方法はありますか?
私が考えているコードの種類は、VisualStudioが実行するリソースおよび設定ファイルのコード生成に似ています。
- ここにインテリセンスがあることは価値があります
- 説明するのは簡単ですが、C#で簡潔に実装することは不可能な多くのプロパティとプロパティ間のリンクがあります。
- 基盤となるリソースは変更可能であり、ユーザーの操作やジェネレーターの内部を理解する必要なしに、コードが自動的に再生成されます。
(非現実的な)例として、同様の名前のC#プロパティ(またはメソッド)を介して正規表現の名前付きキャプチャグループへのアクセサーを生成したプリコンパイラーを考えてみます。これは私が生成したい種類のものの典型です:主な機能がエラーのコンパイル時チェックを可能にすることであるボイラープレートラッパーの長いスニペット(上記;存在しないキャプチャグループへのアクセスまたは書き込みと無効な正規表現)それほど重要ではありませんが、これらのプロパティのインテリセンス。最後に、この設定はチームの他のメンバーが簡単に使用できる必要があります最小限の学習曲線しかありません。つまり、コードを再生成するために手動の介入を要求することも、生成されたコードをソース管理にコミットすることも絶対に受け入れられません。最悪の場合、誰もが何らかの拡張機能をインストールする必要があります。理想的には、拡張機能はソースツリーにインストール可能である必要があります。これにより、ツリーをチェックアウトする人は誰でも、紹介なしでプロジェクトをビルドできます。
それがうまく機能するためには、IDE統合が優れていることが重要です。基になる「リソース」定義ファイルを更新すると 、ユーザーの操作なしでコードの再生成がトリガーされます。理想的には、ジェネレーター自体は、後で他の開発者が簡単に保守できるようになります。 (つまり、ある程度のジェネレーターのデバッグ機能はプラスです)。
最後に、同じテンプレートをさまざまな入力リソースに適用できるXSLTのようなアプローチが理想的です。これは、リソースを更新するだけの場合は実際のジェネレーターコードを確認する必要がないことと、テンプレートの再利用が簡単になることの両方を意味します。
T4を見てきましたが、これは、テンプレートとリソースが完全に分割されていない、あまり便利ではないASPのようなアプローチです(つまり、ジェネレーターがリソースの検索を担当します。これにより、テンプレートの再利用が容易になりません。 )。
同じテンプレートを簡単に再利用でき、(.NET設定ファイルのように)リソースを更新すると実装されたコードの再生成が自動的にトリガーされるような、より優れた(よりクリーンな)ソリューションまたはT4を実行する方法はありますか?
要約: 私はできるコード生成アプローチを探しています
- 基盤となるリソース(テンプレートではありません!)が変更されたときに、開発者の介入なしにコードを自動的に再生成します。
- メンテナンスがやや簡単
- 複数のリソース間で同じジェネレーターテンプレートを共有できるようにします(これは、ポイント#1では、リソースがジェネレーターを参照する必要があり、その逆ではないことを意味します)。