次の場合:
string file = @"c:\somepath\somefile.dll";
.NETを使用してそのDLL)のファイルと製品のバージョン番号を見つけるにはどうすればよいですか?
Dllは、ネイティブまたは管理対象のいずれかです。
ありがとう。
はい、 System.Diagnostics.FileVersionInfo を使用します。
string fileVersion = FileVersionInfo.GetVersionInfo(file).FileVersion;
string productVersion = FileVersionInfo.GetVersionInfo(file).ProductVersion;
アセンブリのファイルバージョンは、アセンブリバージョンとは異なる場合があることに注意してください。アセンブリバージョンは、アセンブリのIDの一部です。
ネイティブdllについてはわかりませんが、マネージDLLでは次のように機能します。
_System.Reflection.Assembly.LoadFile(file).GetName().Version
_
編集:私はあなたがGetFileVersionInfo()
..でCのバージョン情報を読むことができると思います.
FileVersionInfo fi = FileVersionInfo.GetVersionInfo(path);
string fileVersion = fi.FileVersion;
Windowsでは、「ファイルバージョン」と「製品バージョン」は同じです(または少なくともマネージド.dllの場合)。
アセンブリには3つのバージョン番号があります。それらが取る値、それらを使用する人、およびそれらの読み方については、 http://all-things-pure.blogspot.com/2009/09/Assembly-version-file-version-product)を参照してください。 .html 。
.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の提案を使用できます。
ファイルのバージョン情報が必要な場合は、FileVersionInfo
クラスを使用してください( FileVersionInfoドキュメント )
アセンブリバージョンが必要な場合は、リフレクションを使用してそのアセンブリをロードする必要があります。 code plex でこれを行う方法の例があります