Dwie opcje ... niezależnie od typu aplikacji, którą zawsze możesz wywołać:
Assembly.GetExecutingAssembly().GetName().Version
Jeśli używasz aplikacji Windows Forms , zawsze możesz uzyskać dostęp za pośrednictwem aplikacji, jeśli szukasz konkretnej wersji produktu.
Application.ProductVersion
Korzystanie GetExecutingAssemblyz odwołania do zestawu nie zawsze jest opcją. W związku z tym osobiście uważam za przydatne utworzenie statycznej klasy pomocniczej w projektach, w których może być konieczne odwołanie się do podstawowego zestawu lub wersji zestawu:
// A sample assembly reference class that would exist in the `Core` project.publicstaticclassCoreAssembly{publicstaticreadonlyAssemblyReference=typeof(CoreAssembly).Assembly;publicstaticreadonlyVersionVersion=Reference.GetName().Version;}
Następnie mogę czysto odwoływać się CoreAssembly.Versiondo mojego kodu zgodnie z wymaganiami.
Co byłoby interesujące: gdzie należy określić aktualną wersję? Podałem AssemblyVersion i AssemblyFileVersion w moim AssemblyInfo.cs, a wszystko, co otrzymałem z powyższego wywołania to: 0.0.0.0 pomimo określenia 1.0.0
@Zainodis Jeśli odwołujesz się do ClickOncewersji wspomnianej przez @Justin, jest ona określona na Publishkarcie we właściwościach projektu (tj. Niezwiązana z AssemblyVersion lub AssemblyFileVersion).
@CalgaryCoder dzięki za odpowiedź, nie wiem, co to jest ClickOnce, ale okazało się, że podczas edycji pliku AssemblyInfo przez VS, nagle zadziałało oO. Ręczna edycja AssemblyInfo.cas w edytorze tekstu sprawiła, że wszystkie pola stały się puste. Tak czy inaczej, jest już rozwiązany :)
Warto wspomnieć, że nie działa to w aplikacjach ASP.NET MVC ze względu na kontekst uruchamiania. Rozwiązaniem jest odniesienie do znanego typu w witrynie montaż, np wszechobecne MVC HomeController, więc w Razor:v@(Assembly.GetAssembly(typeof(MyWebProject.Mvc.Controllers.HomeController)).GetName().Version.ToString(2))
W MSDN metoda Assembly.GetExecutingAssembly jest uwagą dotyczącą metody „getexecutingassembly”, że ze względu na wydajność powinieneś wywoływać tę metodę tylko wtedy, gdy nie wiesz w czasie projektowania, jaki zespół aktualnie wykonuje.
Zalecanym sposobem pobrania obiektu Assembly, który reprezentuje bieżący zestaw, jest użycie Type.Assemblywłaściwości typu znalezionego w zestawie.
Poniższy przykład ilustruje:
using System;
using System.Reflection;publicclassExample{publicstaticvoidMain(){Console.WriteLine("The version of the currently executing assembly is: {0}",typeof(Example).Assembly.GetName().Version);}}/* This example produces output similar to the following:
The version of the currently executing assembly is: 1.1.0.0
Oczywiście jest to bardzo podobne do odpowiedzi z klasą pomocniczą „publiczna statyczna klasa CoreAssembly”, ale jeśli znasz przynajmniej jeden typ wykonywanego asemblera, tworzenie klasy pomocniczej nie jest obowiązkowe i oszczędza to Twój czas.
GetEntryAssemblyMetoda może powrócić null, gdy udało montaż został załadowany z niezarządzanych aplikacji. Na przykład, jeśli niezarządzana aplikacja tworzy wystąpienie składnika COM napisane w języku C #, wywołanie GetEntryAssemblymetody ze składnika C # zostanie zwrócone null, ponieważ punktem wejścia dla procesu był kod niezarządzany, a nie zarządzany zestaw.
+1. GetEntryAssembly(vs GetCallingAssemblylub GetExecutingAssembly) wydaje się być jedyną rzeczą, która działa, gdy jest wywoływana z biblioteki referencyjnej.
W końcu się zdecydowałem typeof(MyClass).GetTypeInfo().Assembly.GetName().Version na aplikację netstandard1.6. Wszystkie inne proponowane odpowiedzi przedstawiały częściowe rozwiązanie. To jedyna rzecz, która dała mi dokładnie to, czego potrzebowałem.
using System.Diagnostics;
using System.Reflection;//...var assemblyLocation =Assembly.GetExecutingAssembly().Location;var productVersion =FileVersionInfo.GetVersionInfo(assemblyLocation).ProductVersion
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion