2010-11-29 19 views
0

アプリケーションはC#.Net 3.5 WCFサービスです。C#アプリケーションにカスタムバージョン情報を追加

最終的なバイナリとアセンブリにいくつかのビルド情報を動的に追加して、プログラムで読み込んで、WebサービスにGetVersionInfoリクエストを送信するときにWCFクライアントに返すことができます。

.Netアセンブリのバージョン管理では不十分です。アプリケーションが構築された時点のシステムの状態を含む追加の文字列データを含める必要があります。

私は、私が望むデータでapp.configファイルを更新するためのスクリプトを呼び出すポストビルドイベントを追加することでこれを行うと考えています。これは正しいと思いますか、他のアプローチを考えていますか?

更新

私は、最終的なexeファイルの「特別なビルドの説明」プロパティに表示されるように加えて、この文字列たいと思います。私。私はファイルを右クリックし、そのファイルのバージョンタブでこの情報を見たいと思います。

ありがとうございます。

+0

ビルド番号は「1.0。*」の*になりますが、ビルドするたびに自動的に1つ増えます。私はVSの以前のバージョンでこれを行っていましたが、VS 2010でこれを設定できるかどうかわかりません。 – BaBu

答えて

2

プレビルドイベントがポストビルドよりも適切かもしれないと考えています... buildinfo.xmlファイル(またはそれに類するもの)を組み込みリソースとしてアセンブリに組み込むことを検討しましたか?その後、Assembly.GetManifestResourceStreamでロードすることができます。そうすれば、既存のファイルやそのようなものでフィッティングすることを心配する必要はありません。buildinfo.xmlをビルド前のステップで新しいファイルに上書きするだけです。

+0

こんにちは、答えに感謝します。アップデートに関する考え方、つまり、最終バイナリの特別なビルド記述プロパティをどのように埋め込むのか? – ng5000

+0

@ ng5000:いいえ、私はそれがどのように機能するのか分かりません。 –

1

交換したい情報が実行可能ファイル自体に結びついていることの重要性を判断する必要があります。

ビルド中に設定ファイルを更新することは、実行可能なモデルですが、情報とアクセス権がある人とテキストエディタが変更できる場所に情報を配置します。

コンパイルされたアセンブリでのビルド後の情報の更新は可能ですが、壊れやすく、アセンブリに署名することを決定した場合には中断されます。このようにアセンブリファイルを書き直すためのサポートが組み込まれていないため、これも多くの作業です。

独自のカスタムアセンブリレベルのメタデータ属性を作成し、ビルドプロセス中に割り当てることを検討してください。ビルドの一部として、別のコードファイルに配置することもできます(またはAssemblyInfo.csに追加することもできます)。

また、埋め込みリソース(XMLファイルなど)を作成し、それを実行時にアセンブリマニフェストから取得することもできます。

いずれの方法でも、ビルド後の手順ではなく、ビルド前のカスタム手順を使用する必要があります。

多くのデータがない場合、個人的にはメタデータ属性は便利な方法です。それ以外の場合は、埋め込みリソースファイルの使用を検討します。

関連する問題