Получить сборочную версию на Windows Phone 7 - PullRequest
12 голосов
/ 11 ноября 2010

В моих приложениях c # я обычно получаю версию (чтобы показать клиенту), используя следующий код:

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

Это не работает в Windows Phone 7 (зависает эмулятор, а сбой телефона - нет-нет для MS).

Итак, как мне получить версию выполнения на устройстве Windows Phone 7 ??

[Обновление], как отмечено в комментариях ниже, вызов GetName () в приложении wp7, похоже, проблема.

Ответы [ 4 ]

22 голосов
/ 11 ноября 2010

Попробуйте это:

    private static string GetVersionNumber()
    {
        var asm = Assembly.GetExecutingAssembly();
        var parts = asm.FullName.Split(',');
        return parts[1].Split('=')[1];
    }
2 голосов
/ 11 ноября 2010

Работает ли для вас разбор из

Assembly.GetExecutingAssembly (). FullName

работает для вас?

пример вывода: SomeApp, Version = 1.0.0.0, Culture =нейтральный, PublicKeyToken = null

edit: не нужно проходить через ManifestModule

1 голос
/ 11 ноября 2012
 public static string GetVersion()
    {
        return Regex.Match(Assembly.GetExecutingAssembly().FullName, @"Version=(?<version>[\d\.]*)").Groups["version"].Value;
    }

также достаточно чист.

1 голос
/ 12 января 2012

Во-первых, я думаю, что более целесообразно использовать информацию о версии файла сборки для передачи версии приложения пользователю.См. http://techblog.ranjanbanerji.com/post/2008/06/26/Net-Assembly-Vs-File-Versions.aspx

Во-вторых, как насчет этого:

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...