c# - noticias - windows phone 10
¿Cómo obtener la versión de la aplicación en Windows Phone? (11)
En C # uno puede usar System.Version.Assembly para obtener la versión de una aplicación en ejecución. Sin embargo, esto no parece existir en Silverlight para Windows Phone. ¿Hay una alternativa?
En Phone 7 no hay una forma clara de obtener la versión. Lo mejor que puede hacer es analizar el nombre completo (que es la única propiedad expuesta) para la cadena de versión:
String appVersion = System.Reflection.Assembly.GetExecutingAssembly()
.FullName.Split(''='')[1].Split('','')[0];
En primer lugar, creo que es más apropiado usar la información de la versión del archivo del ensamblaje para transmitir la versión de la aplicación al usuario. Ver http://techblog.ranjanbanerji.com/post/2008/06/26/Net-Assembly-Vs-File-Versions.aspx
Segundo, ¿qué tal hacer esto?
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);
}
}
No sé cómo @henry aceptó la respuesta porque todas las respuestas hablan de la versión Dll, pero cuando se habla de obtener la versión de la aplicación para teléfono de Windows significa que la versión de la aplicación está en el mercado. No sé sobre otros, pero realmente no me importa la versión de dll y también uso la versión de mercado para etiquetar la fuente en control de fuente.
Cuando un desarrollador carga XAP en el mercado, especifica la versión de XAP que puede ser diferente de la versión dll, mientras procesa Market lee información del archivo WMAppManifest.xml y escribe la versión que especifique en la página de envío de XAP.
Por lo tanto, la versión deseada está disponible en el archivo WMappManifest.xml que puede leer XmlReader de la siguiente manera;
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");
}
}
Aquí está la muestra 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>
Para que pueda leer la información que desee de la etiqueta App xml de la misma forma que leemos la versión de la etiqueta de la aplicación. por ejemplo, ID de editor o ID de producto
Para obtener la versión de la aplicación de "WMappManifest.xml", esta solución podría ser más eficiente que la solución de Mubashar Ahmad, pero solo funcionará para WP8 +, no para 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;
}
Puede usar el método GetExecutingAssembly y la clase AssemblyName para encontrar esta información.
var nameHelper = new AssemblyName(Assembly.GetExecutingAssembly().FullName);
var version = nameHelper.Version;
var full = nameHelper.FullName;
var name = nameHelper.Name;
Si se mudó a Windows Phone 8, simplemente puede usar la clase PackageId más nueva :
var version = Package.Current.Id.Version;
Simplemente use esta línea para obtener el nombre de la aplicación y el Id, el nombre del editor, etc.
string name = Windows.ApplicationModel.Package.Current.DisplayName;
Windows Phone 8.1:
using System.Reflection;
// ...
Version version = typeof(MainPage).GetTypeInfo().Assembly.GetName().Version;
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;
public static string GetAsemblyVersion()
{
return Convert.ToString(Assembly.GetCallingAssembly().GetName().Version);
}
string versionApp = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Version").Value;