Получить the.NET значение AssemblyInformationalVersion сборки?
каков синтаксис C# для получения сборки AssemblyInformationalVersion
значение атрибута во время выполнения? Пример:
[assembly: AssemblyInformationalVersion("1.2.3.4")]
8 ответов:
using System.Reflection.Assembly using System.Diagnostics.FileVersionInfo // ... public string GetInformationalVersion(Assembly assembly) { return FileVersionInfo.GetVersionInfo(assembly.Location).ProductVersion; }
var attr = Assembly .GetEntryAssembly() .GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false) as AssemblyInformationalVersionAttribute[];
это массив
AssemblyInformationalVersionAttribute
. Он никогда не является нулевым, даже если нет атрибута искомого типа.var attr2 = Attribute .GetCustomAttribute( Assembly.GetEntryAssembly(), typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;
это может быть null, если атрибут отсутствует.
var attr3 = Attribute .GetCustomAttributes( Assembly.GetEntryAssembly(), typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute[];
то же, что и первый.
используя известный тип в вашем приложении вы можете просто сделать это:
using System.Reflection; public static readonly string ProductVersion = typeof(MyKnownType).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
конечно, любой процесс, который вы используете, чтобы добраться до сборки, к которой применяется ваш атрибут, хорош. Обратите внимание, что это не зависит от
System.Diagnostics
или WinForm это
даже если вопрос немного старая:
Я предлагаю другое решение, которое работает для меня:
Application.ProductVersion
AssemblyInformationalVersionAttribute attribute = (AssemblyInformationalVersionAttribute)Assembly.GetExecutingAssembly() .GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).FirstOrDefault(); if (attribute != null) Console.WriteLine(attribute.InformationalVersion);
в дополнение к ответу Лэнса: вы можете использовать
Application.ResourceAssembly.Location
чтобы узнать путь к файлу вашей сборки. С помощью этого можно получить строку AssemblyInformationalVersion всего за одну строкуSystem.Diagnostics.FileVersionInfo.GetVersionInfo(Application.ResourceAssembly.Location).ProductVersion
http://msdn.microsoft.com/en-us/library/system.reflection.assemblyinformationalversionattribute.aspx
взгляните на свойство InformationalVersion