2010-01-25 16 views
5

Dentro de una aplicación Silverlight 3.0, quiero usar el AssemblyFileVersion para mostrar la información de la versión de la aplicación. Este no es el mismo que el AssemblyVersion y típicamente se recupera en una aplicación .NET utilizando código como:Silverlight 3 alternativa a FileVersionInfo.GetVersionInfo

var executingAssembly = Assembly.GetExecutingAssembly(); 
var fileVersionInfo = FileVersionInfo.GetVersionInfo(executingAssembly.Location); 
var versionLabel = fileVersionInfo.FileVersion; 

Desafortunadamente Silverlight 3.0 tiempo de ejecución no incluye la clase FileVersionInfo. ¿Hay una forma alternativa de acceder a esta información?

Respuesta

3

he encontrado una solución a esto en un post en Twitter por Craig Young (cortesía de la página de almacenamiento en caché de Google) usando la siguiente manera Assembly.GetCustomAttributes

var executingAssembly = Assembly.GetExecutingAssembly(); 
var customAttributes = executingAssembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false); 
if (customAttributes != null) 
{ 
    var assemblyFileVersionAttribute = customAttributes[0] as AssemblyFileVersionAttribute; 
    var fileVersionLabel = assemblyFileVersionAttribute.Version; 
} 

Publicación de esta solución para referencia futura.

5

Aquí hay una manera de hacerlo con atributos - No estoy seguro de si funcionará en Silverlight, así que tendrá que avisarme.

Assembly assembly = Assembly.GetExecutingAssembly(); 
object[] attributes = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false); 
if (attributes != null && attributes.Length > 0) 
{ 
    AssemblyFileVersionAttribute fileVersionAttribute = (AssemblyFileVersionAttribute)attributes[0]; 
    string version = fileVersionAttribute.Version; 
} 
+0

Funciona en Silverlight 3. Ya tenía la respuesta y estaba publicando para referencia futura. Mi respuesta atribuye la solución al lugar donde encontré la información primero. Gracias de cualquier manera. –

+2

@Martin, quizás podría publicar algo al respecto en la pregunta para que la gente no pierda el tiempo tratando de ayudar. – overslacked

+0

@overslacked, haré eso la próxima vez aunque, para que quede claro, tenía la respuesta alineada y solo pasaron unos minutos desde que se publicó la pregunta hasta que publiqué la respuesta. Algunas personas son demasiado rápidas para mí :-) –