2010-01-25 7 views
5

Dans une application Silverlight 3.0, je souhaite utiliser AssemblyFileVersion pour afficher les informations de version de l'application. Ce n'est pas le même que le AssemblyVersion et est généralement récupéré dans une application .NET en utilisant un code tel que:Silverlight 3 alternative à FileVersionInfo.GetVersionInfo

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

Malheureusement runtime Silverlight 3.0 ne comprend pas la classe FileVersionInfo. Existe-t-il un moyen alternatif d'accéder à cette information?

Répondre

3

J'ai trouvé une solution à ce poste dans un twitter par Craig Young (avec l'aimable autorisation de mise en cache de la page de Google) en utilisant Assembly.GetCustomAttributes comme suit

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

cette solution d'affichage pour référence ultérieure.

5

Voici une façon de le faire avec des attributs - je ne suis pas sûr que cela fonctionnera dans Silverlight, donc vous devrez me le faire savoir.

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

Cela fonctionne dans Silverlight 3. J'ai déjà eu la réponse et je l'ai posté si pour référence future. Ma réponse attribue la solution à l'endroit où j'ai trouvé l'information en premier. Merci quand même. –

+2

@ Martin, peut-être que vous pourriez poster quelque chose à cet effet dans la question afin que les gens ne perdent pas leur temps à essayer d'aider. – overslacked

+0

@overslacked, je le ferai la prochaine fois bien que pour être clair j'ai eu la réponse alignée et c'était seulement quelques minutes de quand la question a été postée jusqu'à ce que j'ai posté la réponse. Certaines personnes sont juste trop rapides pour moi :-) –