Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Assembly version on windows phone 7

In my c# applications I usually get the version (to show the customer) using the following code:

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version

This does not work in Windows Phone 7 (it hangs the emulator, and phone crashing is a no-no for MS).

So, how do I get the version of the executing on a windows phone 7 device??

[Update] as noted in the comments below, calling GetName() in a wp7 app seems to be the problem.

like image 261
Sam Avatar asked Nov 11 '10 09:11

Sam


3 Answers

Try this:

    private static string GetVersionNumber()
    {
        var asm = Assembly.GetExecutingAssembly();
        var parts = asm.FullName.Split(',');
        return parts[1].Split('=')[1];
    }
like image 74
Matt Lacey Avatar answered Nov 09 '22 20:11

Matt Lacey


Does parsing it out of

Assembly.GetExecutingAssembly().FullName

work for you?

example output: SomeApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

edit: don't need to go through ManifestModule

like image 29
Mick N Avatar answered Nov 09 '22 19:11

Mick N


First, I think it's more apt to use the assembly's file version info for conveying the application version to the user. See http://techblog.ranjanbanerji.com/post/2008/06/26/Net-Assembly-Vs-File-Versions.aspx

Second, what about doing this:

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);
    }
}
like image 1
Rafael Dowling Goodman Avatar answered Nov 09 '22 19:11

Rafael Dowling Goodman