2009-08-03 5 views
1

アセンブリのリストを反復してバージョン番号を決定する必要があります。以前はSystem.Reflection.Assembly.GetExecutingAssembly()。GetName()。Versionを使用していましたが、この場合はまだ読み込まれていないアセンブリで作業しています。私はSystem.Reflection.Assembly.ReflectionOnlyLoadFrom( "assembly.dll")を使うことができると理解していますが、自分のアプリケーションドメインにアセンブリをロードしてアンロードしない限り、これはメモリを食べることがあります。これはReflectionOnlyLoadFrom()かLoadFrom()のどちらですか?外部アセンブリからアセンブリバージョンを取得する最も効率的な方法についての提案

また、アセンブリをロードせずにバージョン情報を取得する方法はありますか?

答えて

6

System.Reflection.AssemblyNameをご覧ください。あなたはSystem.Versionあなたはメジャー、マイナー、マイナーrevisonを得ることができ、オブジェクト、およびリビジョン情報を返す

AssemblyName.GetAssemblyName("foo.dll").Version 

を行うことができます。 GetAssemblyName方法でMsdn articleによると:ファイルが アセンブリマニフェストが含まれている場合

これは動作します。この方法では、 ファイルを開いて閉じますが、 アセンブリはこの ドメインに追加されません。

+0

これは私たちの環境に依存関係を導入しないため、セシルの提案よりも受け入れられます。 – grenade

+0

ここにはドラゴンズがあることに注意してください!これは私たちのためにはうまくいっていましたが、さまざまなタイプのプロジェクト(WPFは違ったことをしています)がさまざまな参照要件を持っていたため、不正行為を開始し、問題を追跡するのは容易ではありませんでした。私はCecilを使用するようにコードを変更しています。 – si618

1

モノプロジェクトのCecil -libraryを使用できます。

+0

私はこのアイデアが大好きです。 – grenade

-1

私は彼らがそれをロードせずにアセンブリバージョンを取得する方法はないと思う。

関連する問題