In C# kann man System.Version.Assembly verwenden, um die Version einer laufenden App zu erhalten. In Silverlight für Windows Phone scheint dies jedoch nicht zu existieren. Gibt es eine Alternative?Wie bekomme ich die App-Version in Windows Phone?
Antwort
Ich weiß nicht, wie @henry die Antwort akzeptiert, weil alle Antworten zu DLL-Version sprechen, aber wenn man spricht über die Version bekommen von Windows Phone App, die Version der App auf dem Markt bedeutet. Ich weiß nicht über andere, aber ich interessiere mich nicht wirklich für die Version von DLL und verwende auch Marktversion, um die Quelle in der Quellcodeverwaltung zu kennzeichnen.
Wenn ein Entwickler XAP auf den Markt hochlädt, gibt er die Version von XAP an, die sich von der DLL-Version unterscheiden kann. Bei der Verarbeitung liest Market die Informationen aus der Datei WMAppManifest.xml und schreibt die von Ihnen angegebene Version auf die XAP-Vorlage Seite.
So die gewünschte Version ist in WMappManifest.xml-Datei verfügbar, die Sie von XmlReader wie folgt lesen können;
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");
}
}
Hier Probe 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>
So können Sie lesen, was Informationen Sie aus dem App-XML-Tag wollen die gleiche Art und Weise, wie wir Version von App-Tag lesen. z.B. Publisher-ID oder Produkt-ID
Warum nicht die 'Package' Klasse als [Magnus Antwort unten] (http://stackoverflow.com/questions/3833354/how-to-get-app-version-in-windows-phone#25714161) verwenden? –
@JamieKitson: Frage war für Windows-Phone-7 und es war die Zeit, wenn die Leute die Unterstützung beider Plattformen in Erwägung ziehen –
Sie können die GetExecutingAssembly-Methode und die AssemblyName-Klasse verwenden, um diese Informationen zu finden.
var nameHelper = new AssemblyName(Assembly.GetExecutingAssembly().FullName);
var version = nameHelper.Version;
var full = nameHelper.FullName;
var name = nameHelper.Name;
Wird es die Version bringen, die wir beim Hochladen des xap im Markt eingestellt haben? –
Auf Phone 7 gibt es keine saubere Möglichkeit, die Version zu bekommen. Das Beste, was zu tun ist, den vollständigen Namen analysiert für die Versionszeichenfolge (das nur ausgesetzte Eigenschaft ist):
String appVersion = System.Reflection.Assembly.GetExecutingAssembly()
.FullName.Split('=')[1].Split(',')[0];
Erstens, ich denke, es ist mehr apt ist die Dateiversion Info Montag zu verwenden zum Fördern der Anwendungsversion der Benutzer. Siehe http://techblog.ranjanbanerji.com/post/2008/06/26/Net-Assembly-Vs-File-Versions.aspx
Zweitens, was dies zu tun:
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;
Um App-Version von "WMappManifest.xml" zu erhalten, diese Lösung könnte effizienter sein als Mubashar Ahmad Lösung, aber es wird nur für WP8 + arbeitet, nicht 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;
}
Ich konnte mir nicht helfen, ich verglich Ihre Lösung mit Mubashar Ahmad mit einer 'Stoppuhr', und ich fand das Ihre Lösung hat es in weniger als der Hälfte der verstrichenen Ticks geschafft :) –
Konnte nur zufällig gewesen sein, aber ich werde jeden Tag weniger Zeilen Code nehmen. –
@JesperRiemerAndersen In der Zwischenzeit habe ich meinen Code im Laufe der Zeit weiter verbessert. Ich habe gerade einen Schnitt gemacht, um meine neueste Optimierung widerzuspiegeln. Ja, ich habe mit Stopwatch über 4 verschiedene XML-Parsing dieser Datei verglichen. –
Wenn Sie haben 8 zu Windows Phone bewegt über, können Sie einfach die newer PackageId Klasse verwenden:
var version = Package.Current.Id.Version;
Warum ist das nicht die akzeptierte Antwort? –
einfach und effektiv..Thnx –
string versionApp = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Version").Value;
public static string GetAsemblyVersion()
{
return Convert.ToString(Assembly.GetCallingAssembly().GetName().Version);
}
einfach u se diese Linie den Application Name und Id zu erhalten, Verleger Name etc ...
string name = Windows.ApplicationModel.Package.Current.DisplayName;
Windows Phone 8.1:
using System.Reflection;
// ...
Version version = typeof(MainPage).GetTypeInfo().Assembly.GetName().Version;
- 1. Windows Phone: Wie bekomme ich die aktuelle Anwendungs-ID
- 2. Ich bekomme nicht, wie Webreferenzen in Windows Phone RT
- 3. Wie bekomme ich eine Bildschirmauflösung von Gerät (Windows Phone)
- 4. Wie aktualisiere ich die aktuelle Seite in Windows Phone 7.5?
- 5. Wie ändere ich die Lokalisierung in C# auf Windows Phone?
- 6. Wie kann ich die Netzwerkverbindung in Windows Phone 7 erkennen?
- 7. Wie in Windows Phone 8
- 8. wie in Windows Phone 8.1
- 9. Wie bekomme ich eine Windows Azure Table Entity auf Windows Phone?
- 10. Befehlsleiste in Windows Phone
- 11. Wie setze ich appVersion für Google Analytics Ereignis-Tracking
- 12. Wie bekomme ich in Windows Phone 7 das chinesische Jahr vom Datum?
- 13. Wie bekomme ich den Titel eines Videos auf Youtube in Windows Phone Apps?
- 14. Wie bekomme ich Thumbnail von Youtube Video auf meiner Anwendung in Windows Phone 7
- 15. Wie bekomme ich Anwendungen in Windows?
- 16. Wie "formatieren" Feldbeschriftungen in Windows Phone 7?
- 17. Wie Bildschirm in Windows Phone 7 ändern?
- 18. Wie verwendet man Frames in Windows Phone?
- 19. Wie lösche ich den Navigationsverlauf in Silverlight/Windows Phone 7?
- 20. Wie erhalte ich einen symmetrischen Schlüssel in Windows Phone 7?
- 21. Wie bekomme ich Windows Benutzername in WPF
- 22. Wie bekomme ich die IP-Adresse vom Socket In Windows
- 23. Wie bekomme ich die Z-Reihenfolge in Windows?
- 24. Wie bekomme ich die NetworkCategory vor Windows 8 in PowerShell?
- 25. Wie OS Sprache in Windows Phone 8.1
- 26. Wie erstelle ich eine gute Testversion in Windows Phone 7?
- 27. Betriebssystemversion erkennen - Windows Phone 7 oder Windows Phone 8?
- 28. Erste in Windows Phone 8.1
- 29. Wie BinaryFormatter in windows phone 7
- 30. wie man in Windows Phone 7 wischen
Zeit, um einige Antworten zu akzeptieren? – AnthonyWJones
@AnthonyWJones OK, jetzt verstehe ich Ihren Kommentar. Du sagst, Henry hat keine Antwort auf die Fragen akzeptiert, die er stellt. –
Ich denke, dass einige Neulinge nicht herausfinden, dass sie eine Antwort als richtig akzeptieren können ... –