W AssemblyInfo
istnieją dwie wersje montażowe:
AssemblyVersion
: Określ wersję przypisywanego zestawu.AssemblyFileVersion
: Nakazuje kompilatorowi użycie określonego numeru wersji dla zasobu wersji pliku Win32. Wersja pliku Win32 nie musi być taka sama jak numer wersji zestawu.
Mogę uzyskać Assembly Version
następujący wiersz kodu:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Ale jak mogę uzyskać Assembly File Version
?
c#
.net
assemblies
version
Enyra
źródło
źródło
Odpowiedzi:
Zobacz mój komentarz powyżej z prośbą o wyjaśnienie, czego naprawdę chcesz. Mam nadzieję, że to jest to:
źródło
FileVersionInfo
ma tylkostring
właściwości, a nieVersion
właściwości?Assembly.GetEntryAssembly()
zwraca NULL na przykład w kontekście dodatków Office, a także w wielu innych przypadkach. Ponadto, jeśli myślisz o dodatkach / wtyczkach - EntryAssembly jest aplikacją hosta, a najczęściej chcesz wersji YourCode (TM) :) Poza tym warto dodać do tej odpowiedzi, któraassembly.Location
zastosowana w odpowiedzi może być również zerowa (tj. pierwszy przypadek wylogowany z Google: github.com/Azure/azure-functions-host/issues/1233 ) i to prawdopodobnie zdarza się nawet częściej niż po zgromadzeniu zerowego wpisu.Istnieją trzy wersje : montaż , plik i produkt . Są używane przez różne funkcje i przyjmują różne wartości domyślne, jeśli ich nie określisz.
źródło
string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); string assemblyVersion = Assembly.LoadFile('your assembly file').GetName().Version.ToString(); string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
[assembly: AssemblyVersion("2.0.*")]
do pliku fileVersion użyj ===[assembly: AssemblyFileVersion("2.0.*")]
i dla produktuVersion ===[assembly: AssemblyInformationalVersion("2.0.*")]
Ostatni może wymagać przyrostka łańcucha w celu zachowaniaSemVer
zgodności:[assembly: AssemblyInformationalVersion("2.0.0-alpha")]
AssemblyFileVersion
nie może używać*
notacji z przyrostkiem. :( Wymaga wszystkich czterech liczb.[assembly: AssemblyFileVersion("2.0.0.1")]
Kiedy chcę uzyskać dostęp do wersji pliku aplikacji (co jest ustawione w Informacje o zestawie -> Wersja pliku), powiedzmy, aby ustawić tekst etykiety przy ładowaniu formularza, aby wyświetlić wersję, właśnie użyłem
źródło
AKTUALIZACJA: Jak wspomniał Richard Grimes w moim cytowanym poście , @Iain i @Dmitry Lobanov, moja odpowiedź jest poprawna teoretycznie, ale błędna w praktyce.
Jak powinienem pamiętać z niezliczonych książek itp., Podczas gdy ustawia się te właściwości za pomocą
[assembly: XXXAttribute]
, zostają one przechwycone przez kompilator i umieszczone wVERSIONINFO
zasobie.Z powyższego powodu musisz zastosować podejście w odpowiedzi @ Xiaofu, ponieważ atrybuty są usuwane po wydobyciu z nich sygnału.
(Od http://bytes.com/groups/net/420417-assemblyversionattribute - jak wspomniano tam, jeśli szukasz innego atrybutu, zastąp go powyższym)
źródło
AssemblyName.Version
tylko za pośrednictwem właściwości. Ale z każdym innym atrybutem jest to właściwy sposóbAssemblyInformationalVersionAttribute
zamiastAssemblyVersionAttribute
.net core 3.1Użyj tego:
Albo to:
źródło