developer tip

.NET 어셈블리의 AssemblyInformationalVersion 값을 가져 오시겠습니까?

optionbox 2020. 11. 20. 08:52
반응형

.NET 어셈블리의 AssemblyInformationalVersion 값을 가져 오시겠습니까?


AssemblyInformationalVersion런타임에 어셈블리의 특성 값 을 가져 오는 C # 구문은 무엇입니까 ? 예:

[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[];

처음과 동일합니다.


응용 프로그램에서 알려진 유형을 사용하면 다음과 같이 간단하게 수행 할 수 있습니다.

using System.Reflection;

public static readonly string ProductVersion = typeof(MyKnownType).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;

물론 속성이 적용되는 어셈블리에 도달하는 데 사용하는 모든 프로세스가 좋습니다. 이것은 System.Diagnostics또는 WinForm의 Application개체 에 의존하지 않습니다 .


질문이 조금 오래된 경우에도 :

저에게 맞는 다른 솔루션을 제안합니다.

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 속성 살펴보기


MVC Razor 뷰에서 AssemblyInformationalVersionAttribute를 가져 오려면 하나의 라이너가 필요한 경우 @Aerthal의 답변을 바탕으로 작성합니다.

@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion

참고 URL : https://stackoverflow.com/questions/7770068/get-the-net-assemblys-assemblyinformationalversion-value

반응형