Подтвердить что ты не робот

Получить версию сборки на Windows Phone 7

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

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

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

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

[Обновить], как указано в комментариях ниже, вызов функции GetName() в приложении wp7 кажется проблемой.

4b9b3361

Ответ 1

Попробуйте следующее:

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

Ответ 2

Разбирает ли это из

Assembly.GetExecutingAssembly(). FullName

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

Пример вывода: SomeApp, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null

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

Ответ 3

Во-первых, я думаю, что более вероятно использовать информацию о версии файла сборки для передачи версии приложения пользователю. См. 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);
    }
}

Ответ 4

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

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