W języku C# można użyć System.Version.Assembly, aby uzyskać wersję uruchomionej aplikacji. Jednak wydaje się, że nie istnieje w Silverlight dla Windows Phone. Czy istnieje alternatywa?Jak uzyskać wersję aplikacji w systemie Windows Phone?
Odpowiedz
nie wiem jak @henry zaakceptowane odpowiedź, ponieważ wszystkie odpowiedzi mówimy o wersji DLL, ale gdy ktoś mówi o coraz wersję aplikacji Windows Phone, która oznacza wersję aplikacji na rynku. Nie wiem o innych, ale naprawdę nie dbają o wersję biblioteki dll, a także używam wersji rynkowej do oznaczania źródła w kontroli źródła.
Kiedy programista przesyła XAP na rynek on/ona określa wersję XAP, która może być inna niż wersja dll, podczas przetwarzania rynku odczytuje informacje z pliku WMAppManifest.xml i zapisuje wersję podaną w zgłoszeniu XAP strona.
Tak pożądana wersja jest dostępna w pliku WMappManifest.xml, który można odczytać za pomocą XmlReader, jak poniżej;
public static string GetAppVersion()
{
var xmlReaderSettings = new XmlReaderSettings
{
XmlResolver = new XmlXapResolver()
};
using (var xmlReader = XmlReader.Create("WMAppManifest.xml", xmlReaderSettings))
{
xmlReader.ReadToDescendant("App");
return xmlReader.GetAttribute("Version");
}
}
Oto próbką WMAppManifest.xml
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2012/deployment" AppPlatformVersion="8.0">
<DefaultLanguage xmlns="" code="en-US"/>
<App xmlns="" ProductID="{cc18507d-0de0-42d6-8b0f-05addeafd21e}" Title="CaledosLab.Phone.ContosoLogTest" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="CaledosLab.Phone.ContosoLogTest author" Description="Sample description" Publisher="CaledosLab.Phone.ContosoLogTest" PublisherID="{a204adfc-7718-4c4a-afb4-c1c39ec50d30}">
</App>
</Deployment>
Więc można przeczytać wszelkie informacje chcesz z App xml tag w ten sam sposób jak czytamy wersję z App tagu. na przykład wydawca ID lub identyfikator produktu
Dlaczego nie używać klasy 'Package' jako [odpowiedź Magnusa poniżej] (http://stackoverflow.com/questions/3833354/how-to-get-app-version-in-windows-phone#25714161)? –
@JamieKitson: pytanie dotyczyło Windows-Phone-7 i był to czas kiedy ludzie rozważają wsparcie dla obu platform –
Możesz użyć metody GetExecutingAssembly i klasy AssemblyName, aby znaleźć te informacje.
var nameHelper = new AssemblyName(Assembly.GetExecutingAssembly().FullName);
var version = nameHelper.Version;
var full = nameHelper.FullName;
var name = nameHelper.Name;
Czy przyniesie wersję, którą ustawimy, przesyłając Xap na rynek? –
On Phone 7 nie jest czysty sposób, aby uzyskać wersji. Najlepszą rzeczą do zrobienia jest przeanalizować pełną nazwę (która jest jedynym narażone nieruchomości) dla ciągu Wersja:
String appVersion = System.Reflection.Assembly.GetExecutingAssembly()
.FullName.Split('=')[1].Split(',')[0];
Po pierwsze, myślę, że to bardziej skłonni do korzystania Zgromadzenia informacje o wersji pliku do przenoszenia wersję aplikacji do użytkownik. Zobacz http://techblog.ranjanbanerji.com/post/2008/06/26/Net-Assembly-Vs-File-Versions.aspx
drugie, co w ten sposób:
using System;
using System.Linq;
using System.Reflection;
public static class AssemblyExtensions
{
public static Version GetFileVersion(this Assembly assembly)
{
var versionString = assembly.GetCustomAttributes(false)
.OfType<AssemblyFileVersionAttribute>()
.First()
.Version;
return Version.Parse(versionString);
}
}
System.Text.RegularExpressions.Regex regexVersion = new System.Text.RegularExpressions.Regex(@".*(?<v>\d+.\d+.\d+.\d+).*");
System.Text.RegularExpressions.Match regexVersion_Match = regexVersion.Match(System.Reflection.Assembly.GetExecutingAssembly().FullName);
string appVersion = "";
if (regexVersion_Match.Success)
appVersion = regexVersion_Match.Groups["v"].Value;
Aby uzyskać wersji aplikacji z "WMappManifest.xml", to rozwiązanie może być bardziej skuteczne niż rozwiązania Mubashar Ahmad, ale to będzie działać tylko dla WP8 +, nie WP7:
using (var stream = new FileStream("WMAppManifest.xml", FileMode.Open, FileAccess.Read))
{
var appVersion = XElement.Load(stream).Element("App").Attribute("Version");
return appVersion != null ? appVersion.Value : null;
}
Nie mogłem się powstrzymać, porównałem twoje rozwiązanie z Mubasharem Ahmadem używając "Stopera" i odkryłem, że twoje rozwiązanie zrobiło to w mniej niż połowie liczby wykonanych tyknięć :) –
To mogło być przypadkowe, ale każdego dnia przyjmę mniej linii kodu. –
@JesperRiemerAndersen W międzyczasie udoskonaliłem mój kod w czasie. Właśnie dokonałem edycji, aby odzwierciedlić moją najnowszą optymalizację. Tak, użyłem Stopwatch do porównania ponad 4 różnych parsowania xml tego pliku. –
Jeśli zostały przeniesione do Windows Phone 8, można po prostu użyć klasy newer PackageId:
var version = Package.Current.Id.Version;
Dlaczego nie jest to zaakceptowana odpowiedź? –
proste i skuteczne .. Thnx –
string versionApp = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Version").Value;
public static string GetAsemblyVersion()
{
return Convert.ToString(Assembly.GetCallingAssembly().GetName().Version);
}
Wystarczy u se ta linia uzyskać nazwę aplikacji i identyfikator, nazwę wydawcy itp ...
string name = Windows.ApplicationModel.Package.Current.DisplayName;
Windows Phone 8.1:
using System.Reflection;
// ...
Version version = typeof(MainPage).GetTypeInfo().Assembly.GetName().Version;
- 1. Wdrażanie aplikacji w systemie Windows Phone 7
- 2. Pobierz wersję montaż na Windows Phone 7
- 3. Jak uzyskać uruchamianie aplikacji w systemie Windows?
- 4. Jak zbierać dzienniki aplikacji w systemie Windows Phone 8.1?
- 5. Jak skompresować obraz w systemie Windows Phone
- 6. Darowizna w aplikacji Windows Phone
- 7. Obejście ograniczeń Windows.ApplicationModel.Package w systemie Windows Phone?
- 8. Pierwsze Wersja aplikacji Windows Phone 8
- 9. Konfigurowanie reklam w systemie Windows Phone 8
- 10. Wyeliminuj podświetlanie w systemie Windows Phone 7?
- 11. OCR w systemie Windows Phone 8 WP8
- 12. Jak programowo wykrywać wersję systemu operacyjnego Windows Phone 8.1?
- 13. Przesłanianie motywów w systemie Windows Phone 7
- 14. Selektor plików w systemie Windows Phone 8.1
- 15. NetTcpBinding w systemie Windows Phone 7.1 (Mango)
- 16. Stan urządzenia w systemie Windows Phone 8.1
- 17. Wykryj wersję systemu operacyjnego - Windows Phone 7 lub Windows Phone 8?
- 18. Jak uruchomić aplikację w tle w systemie Windows Phone?
- 19. Jak wymusić użycie jasnego motywu w systemie Windows Phone 7?
- 20. Jak uruchomić IE7 z aplikacji Windows Phone?
- 21. IsolatedStorage Windows phone 8
- 22. Jak zmienić szablon nagłówka przestawnego w systemie Windows Phone 8
- 23. Publikowanie aplikacji Unity w sklepie Windows Phone
- 24. Jak uzyskać listę wszystkich dostępnych klawiatur w systemie Windows Phone Mango (w kodzie C#)?
- 25. Transakcja PayPal z użyciem aplikacji Windows Phone
- 26. Uwierzytelnianie LDAP w Windows Phone
- 27. Windows Phone 8, ustawienia aplikacji nie trwały
- 28. Wystąpienie pamięci WriteableBitmap w systemie Windows Phone 8
- 29. Jak zainstalować starszą wersję pliku node.js w systemie Windows?
- 30. Kiedy należy zapisać ustawienia w systemie Windows Phone 7?
Czas na zaakceptowanie niektórych odpowiedzi? – AnthonyWJones
@AnthonyWJones OK, teraz rozumiem twój komentarz. Mówisz, że henry nie zaakceptował odpowiedzi na pytania, które prosi. –
Myślę, że niektórzy początkujący nie wiedzą, że mogą przyjąć odpowiedź jako poprawną ... –