2009-04-12 7 views
1

This questionは似ていますが、唯一の答えは私のニーズに答えるものではないようです)。コード生成をC#ソリューションに組み込む方法は?

私はThriftをC#で使用することを考えていますが、ビルドプロセスがどのくらい正確に機能するか考慮しています。 Visual Studio 2008のC#プロジェクトは、C#クラスを生成するカスタムビルドアクションをサポートしていますか?

「カスタムツール」オプションが見つかりましたが、探しているものがわかりません。デザイン時にのみ使用できます(ビルドプロセスには必須ではなく、カスタムツールの実行 "を参照)。彼らは考慮に依存関係を取り、ビルドプロセスを延長していないようFionnが提案

更新

事前に作成イベントは、確かに最適ではありません。また、ファイルごとではなく中央の場所から管理されます。

答えて

2

コード生成をビルド前のイベントに単純に置き換えた場合はどうでしょうか?

これらは、Visual Studioの[プロジェクトプロパティ]の[ビルドイベント]セクションにあります。

また、「Edit Pre-build ...」ボタンを使用すると表示されるマクロもサポートされています。

+0

これは、プロジェクトに依存するプロジェクトを再構築するかどうかをVSがどのように解決するかに影響するため、非常に最適ではありません。 –

+0

本当に最適ではない、私は質問に非解答としてこれを入力した。 私はC++プロジェクトでこのようなことをやっていました。これは長い間ずっと前です(私はVS6であったと思います)。 C#でこの機能が表示されないのはなぜですか? – ripper234

0

MS Buildは高度に構成可能です。 Visual Studio自体もvery extensibleです。 CodeDOMを使用すると、クラスを送信できます。カスタマイズしたVSとビルドプロセスにどれだけの時間をかけたいかによって、実行できないことはほとんどありません。

1

最も簡単で安全なオプションは、「プリビルドイベント」に世代をFionnの言及として含めることです。利点:コードは常に正しいです。短所:これは、各コンパイル時にソースコードを再生成し、変更されたコードとしてすべての依存関係を再構築することを意味します。

また、コードファイルを手動で再生成する方法もあります。ビルドマシン/継続的統合がある場合は、それぞれのビルドコードファイルを再構築してください。短所:変更が少ない場合、ビルドの高速化短所:生成されたコードが古く、浪費されたデバッグの時間が間違ったものを解決しようとしています。

C#プロジェクトのヘルプを読むと、必要なカスタムツールアクションを提供するプラグインが必要になると思われます。しかし、C++プロジェクトでは、独自のカスタムステップMS-Helpを定義することができます。だから、VisualStudioプラグインを開発したり、ソリューションにC++プロジェクトを追加したり、そのプロジェクトにカスタムビルドステップを追加して、通常のC#プロジェクトに出力を組み込むことができます。

visual studio custom tool code gen」の最初のgoogleは、how-to write your own Custom Toolという優れた出発点です。

関連する問題