2009-10-08 12 views
25

Biorąc pod uwagę następujące elementy:Wersja DLL w .NET

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

Jak mogę znaleźć numery plików i wersji produktu tego DLL przy użyciu .NET?

Plik dll może być natywny lub zarządzany.

Dzięki.

Odpowiedz

38

Tak , używając System.Diagnostics.FileVersionInfo.

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

Należy pamiętać, że wersja pliku zestawu może różnić się od wersji złożenia. Wersja złożona jest częścią tożsamości złożenia.

+0

Dzięki Lars, jakoś przeoczyłem klasę FileVersionInfo. – rein

+0

Mam problem z tą klasą FileVersionInfo. Nie mogę tego znaleźć. Próbowałem używać przestrzeni nazw System :: Diagnostics, ale nie jest to w diagnostyce. Próbowałem clr projektu, pusty projekt C++, i link version.lib, system.dll i nadal nie mogę go znaleźć. Proszę pomóż. – shake

+0

Należy pamiętać, że FileVersionInfo.FileVersion jest reprezentacją ciągów, które mogą nie być aktualne. Powinieneś spojrzeć na FileVersionInfo.FileMajorPart, FileMinorPart, FileBuildPart, FilePrivatePart. Zobacz [GetFileVersionInfo() zwraca informacje o wersji błędnego pliku] (http://stackoverflow.com/questions/5263954/getfileversioninf-returns-wrong-files-version-information) – bdeem

4

nie wiem o natywnych bibliotek DLL, ale z zarządzanych DLL to działa tak:

System.Reflection.Assembly.LoadFile(file).GetName().Version 

EDIT: Myślę, że można odczytać informacje o wersji w C z GetFileVersionInfo() ...

+1

Uwaga: to zwraca wersję zespołu, a nie wersję pliku. Oba mogą się różnić. –

+1

To także nie jest to samo, co funkcja win32 GetFileVersionInfo, która zwraca wersję pliku, a nie wersję zespołu. –

+0

Masz rację, oczywiście. – EricSchaefer

0

Jeśli chcesz, aby informacje o wersji pliku, a następnie użyć klasy (FileVersionInfo documentation)

FileVersionInfo Jeśli chcesz wersję montażową następnie trzeba będzie ładować, że montaż przy użyciu odbicia. Jest to przykład, jak to zrobić na code plex

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

W systemie Windows „File Version” i „Wersje” są takie same (lub przynajmniej jest to dla zarządzanego .dll).

+1

Wersja pliku i wersja produktu mogą się również różnić dla zarządzanych bibliotek dll. [AssemblyFileVersion] vs [AssemblyInformationalVersion]. Zobacz http://stackoverflow.com/questions/7770068/get-the-net-assemblys-assemblyinformationalversion-value i http://stackoverflow.com/questions/64602/what-are-differences-between-assemblyversion-assemblyfileversion-and -montażowanie –

0

dla wersji pliku .net może być czymś 1.0. , 1.1. 1.2. , 2.0., więc na innymi słowy, wydawca może zdecydować się na poprawienie wersji głównej i pomocniczej dla projektu, a resztę pozostawić .net do kompilacji i inkrementacji. Z drugiej strony

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

dadzą pełny numer wersji z dur-moll, zbudować numery

powyższy kod C# działa w wykonywaniu .exe i realizacji .dll

Oczywiście, jeśli próbują użyć czyjejś biblioteki dll, możesz użyć sugestii Eclipsed4utoo lub EricSchaefer w zależności od tego, jak wydawca zdecyduje się na przypisanie wersji i kompilacji.

Powiązane problemy