Что такое синтаксис С# для получения значения атрибута сборки AssemblyInformationalVersion
во время выполнения? Пример:
[assembly: AssemblyInformationalVersion("1.2.3.4")]
Что такое синтаксис С# для получения значения атрибута сборки AssemblyInformationalVersion
во время выполнения? Пример:
[assembly: AssemblyInformationalVersion("1.2.3.4")]
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
. Он не всегда имеет значение null, даже если атрибут искомого типа отсутствует.
var attr2 = Attribute
.GetCustomAttribute(
Assembly.GetEntryAssembly(),
typeof(AssemblyInformationalVersionAttribute))
as AssemblyInformationalVersionAttribute;
Это может быть null, если атрибут отсутствует.
var attr3 = Attribute
.GetCustomAttributes(
Assembly.GetEntryAssembly(),
typeof(AssemblyInformationalVersionAttribute))
as AssemblyInformationalVersionAttribute[];
Аналогично первой.
Даже если вопрос немного старый:
Я предлагаю другое решение, которое работает для меня:
Application.ProductVersion
AssemblyInformationalVersionAttribute attribute =
(AssemblyInformationalVersionAttribute)Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).FirstOrDefault();
if (attribute != null)
Console.WriteLine(attribute.InformationalVersion);
Используя известный тип в приложении, вы можете просто сделать это:
using System.Reflection;
public static readonly string ProductVersion = typeof(MyKnownType).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
Конечно, любой процесс, который вы используете для доступа к сборке, к которой применяется ваш атрибут, хорош. Обратите внимание, что это не зависит от System.Diagnostics
или объекта WinForm Application
.
Чтобы дополнить ответ lance: вы можете использовать Application.ResourceAssembly.Location
, чтобы узнать путь к файлу вашей сборки. Благодаря этому можно получить строку AssemblyInformationalVersion только в одной строке
System.Diagnostics.FileVersionInfo.GetVersionInfo(Application.ResourceAssembly.Location).ProductVersion
http://msdn.microsoft.com/en-us/library/system.reflection.assemblyinformationalversionattribute.aspx
Взгляните на свойство InformativeVersion
Создание ответа @Aerthal, если вы хотите, чтобы один лайнер получал атрибут AssemblyInformationalVersionAttribute из представления Razor MVC:
@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion