Номер версии в приложении .NET Compact Framework - PullRequest
5 голосов
/ 10 февраля 2009

Мне нужно отобразить номер версии .NET Compact Framework на экране. Я использую .NET CF 2.0 с Windows CE 4.0.

До сих пор я полностью игнорировал номер версии. Нужно ли что-нибудь добавлять в сборку? как мне получить это программно?


К сожалению, это не относится к Compact Framework . Свойство Application.ProductVersion не существует в Compact Framework. Хотя последняя часть вашего ответа применима.

Еще один вопрос: эти свойства (основные, второстепенные, сборка, ревизия) увеличиваются автоматически или я устанавливаю их, когда захочу? На мой взгляд, ревизия должна автоматически увеличиваться с каждой новой сборкой.

Ответы [ 4 ]

12 голосов
/ 10 февраля 2009

System.Reflection.Assembly.GetExecutingAssembly (). GetName (). Version.Major System.Reflection.Assembly.GetExecutingAssembly (). GetName (). Version.Minor System.Reflection.Assembly.GetExecutingAssembly (). GetName (). Version.Build System.Reflection.Assembly.GetExecutingAssembly (). GetName (). Version.Revision

Источник: http://msdn.microsoft.com/en-us/library/system.version.aspx

(Edit)

Application.ProductVersion Property

Получает версию продукта, связанную с этим приложением.

Недоступно в Compact Framework, но System.Reflection.Assembly.GetExecutingAssembly (). GetName (). Версия Is.

Источник: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.productversion.aspx

6 голосов
/ 17 февраля 2009
  • Вы также можете использовать Version.ToString (), передав число компонентов, возвращаемых в качестве параметра:

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

    Эта строка возвращает Major.Minor.Build

    Источник: http://msdn.microsoft.com/en-us/library/bff8h2e1(VS.80).aspx

  • В вашем проекте есть файл AssemblyInfo.cs, в котором вы можете редактировать версию сборки. Для автоматического увеличения версии вы можете использовать что-то вроде этого: 1.0.3200. *

    Источник: http://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute(VS.80).aspx

1 голос
/ 04 сентября 2014

Я знаю, что это старый вопрос, но вот решение, которое я нашел, используя Reflection и Linq (отправлено из мой ответ здесь ).

Сначала я добавил это в AssemblyInfo.cs (замените строку на то, что вы хотите использовать):

[assembly: AssemblyInformationalVersion("1.0.0.0 Alpha")]

Затем вы можете использовать этот метод для извлечения атрибута (я поместил его в статический класс в файле AssemblyInfo.cs). Метод get представляет собой массив всех атрибутов Assembly, затем выбирает первый результат, соответствующий имени атрибута (и приводит его к правильному типу). Затем можно получить доступ к строке InformationalVersion.

//using System.Reflection;
//using System.Linq;
public static string AssemblyInformationalVersion
{
    get
    {
        AssemblyInformationalVersionAttribute informationalVersion = (AssemblyInformationalVersionAttribute) 
            (AssemblyInformationalVersionAttribute.GetCustomAttributes(Assembly.GetExecutingAssembly())).Where( 
                at => at.GetType().Name == "AssemblyInformationalVersionAttribute").First();

        return informationalVersion.InformationalVersion;
    }
}

Чтобы получить обычный атрибут AssemblyVersion, который я использовал:

//using System.Reflection;
public static string AssemblyVersion
{
    get
    {
        return Assembly.GetExecutingAssembly().GetName().Version.ToString();
    }
}
0 голосов
/ 09 апреля 2015

Чтобы отобразить версию продукта с .NET Compact Framework (протестировано с 2.0 и 3.5), вы можете использовать AssemblyHelper.getProductVersion () , определенный ниже.

Например, если версия сборки определена, как показано ниже в файле AssemblyInfo.cs, результатом метода будет "1.2.3".

Извлечение файла AssemblyInfo.cs:

[assembly: AssemblyVersion("1.2.3")]

Извлечение файла AssemblyHelper.cs:

using System;
using System.Reflection;

public static class AssemblyHelper
{
  public static string getProductVersion()
  {
    Version assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version;
    return String.Format("{0}.{1}.{2}", assemblyVersion.Major, assemblyVersion.Minor, assemblyVersion.Build);
  }
}
...