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.
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.
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.
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()
...
Uwaga: to zwraca wersję zespołu, a nie wersję pliku. Oba mogą się różnić. –
To także nie jest to samo, co funkcja win32 GetFileVersionInfo, która zwraca wersję pliku, a nie wersję zespołu. –
Masz rację, oczywiście. – EricSchaefer
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
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).
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 –
Istnieją trzy numery wersji w zespole. Aby dowiedzieć się, jakie wartości biorą, kto ich używa i jak je odczytać, zobacz: http://all-things-pure.blogspot.com/2009/09/assembly-version-file-version-product.html.
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.
Dzięki Lars, jakoś przeoczyłem klasę FileVersionInfo. – rein
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
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