Номер версии в приложении.NET Compact Framework
Мне нужно отобразить номер версии.NET Compact Framework на экране. Я использую.NET CF 2.0 с Windows CE 4.0.
До сих пор я полностью игнорировал номер версии. Нужно ли что-нибудь добавлять в сборку? как мне получить это программно?
К сожалению, это не относится к Compact Framework. Application.ProductVersion
свойство не существует в Compact Framework. Хотя последняя часть вашего ответа применима.
Еще один вопрос: эти свойства (основные, второстепенные, сборка, ревизия) увеличиваются автоматически или я устанавливаю их, когда захочу? На мой взгляд, ревизия должна автоматически увеличиваться с каждой новой сборкой.
4 ответа
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Major System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Minor System.Reflection.Assembly.GetExecutingAssembly().GetName(). Версия. Сборка System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Revision
Источник: http://msdn.microsoft.com/en-us/library/system.version.aspx
(Редактировать)
Application.ProductVersion Property
Получает версию продукта, связанную с этим приложением.
Недоступно в Compact Framework, но System.Reflection.Assembly.GetExecutingAssembly (). GetName (). Версия есть.
Источник: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.productversion.aspx
Вы также можете использовать 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
Я знаю, что это старый вопрос, но вот решение, которое я нашел, используя 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();
}
}
Чтобы отобразить версию продукта с.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);
}
}