En C# se 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?¿Cómo obtener la versión de la aplicación en Windows Phone?
Respuesta
No sé cómo @henry aceptaron la respuesta porque todas las respuestas están hablando de versión de DLL pero cuando uno está hablando acerca de cómo obtener la versión de la aplicación de Windows Phone que significa la versión de la aplicación 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 a la versión dll, mientras procesa Market lee información del archivo WMAppManifest.xml y escribe la versión que especifique en el envío de XAP página.
Así que la versión deseada está disponible en el archivo WMappManifest.xml que puede leer por 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í es WMAppManifest.xml muestra
<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 XML Aplicación de la misma manera como se lee la versión de la etiqueta de aplicación. p.ej. editor o identificación del producto
¿Por qué no utilizar la clase 'Package' como [la respuesta de Magnus a continuación] (http://stackoverflow.com/questions/3833354/how-to-get-app-version-in-windows-phone#25714161)? –
@JamieKitson: la pregunta era para windows-phone-7 y era el momento en que la gente consideraba que era compatible con ambas plataformas –
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;
¿Traerá la versión que configuramos mientras cargamos el xap en el mercado? –
en el teléfono 7 no hay manera limpia para obtener la versión. Lo mejor que puede hacer es analizar el nombre completo (que es la única propiedad expuesta) de la cadena de versión:
String appVersion = System.Reflection.Assembly.GetExecutingAssembly()
.FullName.Split('=')[1].Split(',')[0];
En primer lugar, creo que es más apto para utilizar información de versión de archivo de la asamblea para transportar la versión de la aplicación de el usuario. Ver http://techblog.ranjanbanerji.com/post/2008/06/26/Net-Assembly-Vs-File-Versions.aspx
En segundo lugar, ¿qué hay de 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);
}
}
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;
Para obtener Versión de la aplicación de "WMAppManifest.xml", esta solución puede ser más eficiente que la solución Mubashar Ahmad, pero sólo funcionarán para WP8 +, no 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;
}
no pude evitarlo, comparé su solución con Mubashar Ahmad usando un 'Cronómetro', y descubrí que su solución lo hizo en menos de la mitad del número de ticks transcurridos :) –
Podría haber sido una coincidencia, pero tomaré menos líneas de código cualquier día. –
@JesperRiemerAndersen Mientras tanto, he mejorado mi código a lo largo del tiempo. Acabo de hacer una edición para reflejar mi última optimización. Sí, usé Cronómetro para comparar más de 4 análisis xml diferentes de este archivo. –
Si se ha mudado a Windows Phone 8, sólo tiene que utilizar la clase newer PackageId:
var version = Package.Current.Id.Version;
¿Por qué no es esta la respuesta aceptada? –
simple y eficaz..Thnx –
string versionApp = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Version").Value;
public static string GetAsemblyVersion()
{
return Convert.ToString(Assembly.GetCallingAssembly().GetName().Version);
}
simplemente u SE esta línea para obtener el nombre de la aplicación y Id, 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;
- 1. Windows phone: cómo obtener la ID de aplicación actual
- 2. Obtenga la versión Asamblea en Windows Phone 7
- 3. ¿Cómo obtener la versión actual del sistema operativo de Windows Phone?
- 4. ¿Cómo obtener la página principal desde cualquier parte de la aplicación Windows Phone 7?
- 5. Abra la aplicación Windows Phone 7 desde la URL
- 6. Windows Phone 7 Estilos en la aplicación de escritorio
- 7. obtener la ID del dispositivo actual con Windows Phone 7
- 8. ¿Cómo detectar la versión verdadera de Windows?
- 9. Obtener el título de la aplicación Windows Phone 7 del código
- 10. Desplegable de Windows Phone
- 11. ¿Cómo obtener la versión de la aplicación y compilarla en una aplicación PhoneGap de iOS?
- 12. Windows Phone 7.1 SDK vs Windows Phone 7.5 SDK
- 13. ¿Cómo iniciar IE7 desde una aplicación de Windows Phone?
- 14. Cómo comprimir una imagen en Windows Phone
- 15. Windows Phone Cómo desplazar verticalmente
- 16. Windows Phone 7: SQLite
- 17. App.config en Windows Phone 7?
- 18. Cómo ejecutar la aplicación en la versión anterior de Simulator
- 19. Deshabilitar la pantalla de autobloqueo en Windows Phone 7
- 20. Obtener la lista de archivos de la carpeta SkyDrive (Windows Phone)
- 21. Reemplazar serializationinfo en Windows Phone
- 22. ¿Cómo obtener la versión traducida de la cuenta integrada de Windows Network Service?
- 23. Metaetiqueta de Windows Phone
- 24. Biblioteca RTMP para Windows Phone
- 25. Cambiar la configuración del teléfono de Windows Phone 7 App
- 26. ¿Hay una aplicación de referencia de Windows Phone 7?
- 27. ¿Cuándo debo guardar la configuración en Windows Phone 7?
- 28. ¿cómo crear un diálogo de confirmación en Windows Phone 7?
- 29. Obtener la versión de PostGIS
- 30. ¿Quién establece la cultura del hilo en Windows Phone 7?
¿Es tiempo de aceptar algunas respuestas? – AnthonyWJones
@AnthonyWJones Bien, ahora entiendo tu comentario. Estás diciendo que Henry no ha aceptado una respuesta para las preguntas que hace. –
Creo que algunos novatos no se dan cuenta de que pueden aceptar una respuesta como correcta ... –