web-dev-qa-db-ja.com

.NETのdllのバージョン番号

次の場合:

string file = @"c:\somepath\somefile.dll";

.NETを使用してそのDLL)のファイルと製品のバージョン番号を見つけるにはどうすればよいですか?

Dllは、ネイティブまたは管理対象のいずれかです。

ありがとう。

25
rein

はい、 System.Diagnostics.FileVersionInfo を使用します。

string fileVersion = FileVersionInfo.GetVersionInfo(file).FileVersion;
string productVersion = FileVersionInfo.GetVersionInfo(file).ProductVersion;

アセンブリのファイルバージョンは、アセンブリバージョンとは異なる場合があることに注意してください。アセンブリバージョンは、アセンブリのIDの一部です。

38
Lars Truijens

ネイティブdllについてはわかりませんが、マネージDLLでは次のように機能します。

_System.Reflection.Assembly.LoadFile(file).GetName().Version
_

編集:私はあなたがGetFileVersionInfo() ..でCのバージョン情報を読むことができると思います.

4
EricSchaefer
 FileVersionInfo fi = FileVersionInfo.GetVersionInfo(path);
 string fileVersion = fi.FileVersion;

Windowsでは、「ファイルバージョン」と「製品バージョン」は同じです(または少なくともマネージド.dllの場合)。

4
Ryan Alford

アセンブリには3つのバージョン番号があります。それらが取る値、それらを使用する人、およびそれらの読み方については、 http://all-things-pure.blogspot.com/2009/09/Assembly-version-file-version-product)を参照してください。 .html

1
user187017

.netアセンブリファイルのバージョンは、1.0 .、1.1。 1.2 .、2.0。などのようになります。言い換えると、発行者はメジャーを修正することを選択できます。プロジェクトのマイナーバージョンですが、残りは.netに任せてコンパイルし、インクリメントします。一方

string version=System.Reflection.Assembly.GetExecutingAssembly()
    .GetName().Version.ToString();

メジャー、マイナー、ビルド番号を含む完全なバージョン番号を提供します

上記のc#コードは、.exeの実行と.dllの実行で機能します

もちろん、誰かのdllを使用しようとしている場合は、発行者がバージョンとビルドを割り当てる方法に応じて、Eclipsed4utooまたはEricSchaeferの提案を使用できます。

0
gg89

ファイルのバージョン情報が必要な場合は、FileVersionInfoクラスを使用してください( FileVersionInfoドキュメント

アセンブリバージョンが必要な場合は、リフレクションを使用してそのアセンブリをロードする必要があります。 code plex でこれを行う方法の例があります

0
Justin