私は、ユーザーが10個程度の個々のモジュールのうちの1つを実行できるデスクトップアプリケーションを持っています。各モジュールは、ソリューションに独立したクラスライブラリとして存在します。個々のモジュールのバージョン管理はユーザにとって重要なので、Help-> Aboutボックスに各クラスライブラリのバージョンをリストしたいと考えています。これはかなり簡単ですが、私は現在、以下のスニペットを使用してAboutBoxのrichTextボックスにデータを設定しています。シングルアセンブリにマージする際にライブラリのバージョンを取得する
public Dictionary<string, Type> moduleList = new Dictionary<string, Type>();
しかし、ここではしわです:親メインフォーム内のモジュールのリストは、名前と型の辞書であることを
this.moduleVersions.Text = "";
foreach (var kvp in mainform.moduleList)
this.moduleVersions.Text += String.Format("{0,-20}: {1}\r\n", kvp.Key, kvp.Value.Assembly.GetName().Version.ToString());
注意。リリースビルドでは、私は難読化し、すべてのdllを単一の実行可能ファイルにマージします。これがベストプラクティスであるかどうかという疑問を別にして(私はそれが魅力的な理由があると知っています)、問題は、すべてのモジュールが物理的に同じアセンブリ内にあるので上のスニペットを破るということですフォーム)、それらはすべてメインアセンブリのバージョンを返します。私は何とか元のアセンブリのバージョン番号を持ち歩きたい。これはブルートフォース(すなわちハードコーディングバージョン番号)なしで可能ですか?
また、私はそれは関係ないと思っていますが、私は難読化とマージのために.NET Reactorを使用しています。
ありがとうございました。
カスタム属性を作成し、型を飾ります。 – leppie
パーフェクト。ありがとうございました。 – Gadzooks34
私は今答えとして投稿しました:) – leppie