Sam
Sam

Reputation: 29009

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.

Upvotes: 12

Views: 4828

Answers (4)

Trevor Kennedy
Trevor Kennedy

Reputation: 45

 public static string GetVersion()
    {
        return Regex.Match(Assembly.GetExecutingAssembly().FullName, @"Version=(?<version>[\d\.]*)").Groups["version"].Value;
    }

is fairly clean as well.

Upvotes: 1

Rafael Dowling Goodman
Rafael Dowling Goodman

Reputation: 913

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);
    }
}

Upvotes: 1

Mick N
Mick N

Reputation: 14882

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

Upvotes: 2

Matt Lacey
Matt Lacey

Reputation: 65586

Try this:

    private static string GetVersionNumber()
    {
        var asm = Assembly.GetExecutingAssembly();
        var parts = asm.FullName.Split(',');
        return parts[1].Split('=')[1];
    }

Upvotes: 22

Related Questions