Programming/C# - Window

C#/ 어셈블리(Assembly) 사용

esoog Polaris 2023. 10. 12. 11:49
반응형

# 어셈블리(Assembly)

.NET Framework 또는 .NET Core와 같은 Microsoft의 관리 코드 환경에서 사용되는 단위 컴파일된 코드 패키지입니다. 어셈블리는 하나 이상의 클래스, 인터페이스, 구조체, 열거형 및 리소스와 같은 코드와 관련된 메타데이터를 포함하고 있습니다.

어셈블리는 .NET 애플리케이션의 기본 빌딩 블록 중 하나로서 다음과 같은 주요 특징을 가지고 있습니다:

1. **단위 컴파일**: C# 코드는 컴파일되어 어셈블리로 패키징됩니다. 이러한 어셈블리는 컴파일된 IL(Intermediate Language) 코드와 메타데이터로 이루어져 있습니다.

2. **버전 관리**: 어셈블리에는 버전 번호가 있으며, 이를 통해 다른 어셈블리들과의 호환성을 관리할 수 있습니다. 새로운 버전의 어셈블리는 이전 버전과 동시에 설치하고 사용할 수 있습니다.

3. **공유 가능성**: 어셈블리는 재사용 가능하며, .NET 환경에서 다른 애플리케이션에서도 공유하여 사용할 수 있습니다.

4. **보안 및 코드 액세스 제어**: 어셈블리는 코드 액세스 보안 및 권한 설정을 구현하기 위한 메커니즘을 제공합니다.

5. **Private 및 Public 어셈블리**: .NET 어셈블리는 "private" 어셈블리와 "public" 어셈블리로 나뉩니다. "private" 어셈블리는 특정 애플리케이션 내에서만 사용되며 "public" 어셈블리는 여러 애플리케이션에서 공유될 수 있습니다.

6. **GAC (Global Assembly Cache)**: 공유되는 어셈블리는 GAC에 설치되어 전역적으로 액세스할 수 있도록 만들 수 있습니다.

C#에서 어셈블리는 소프트웨어 컴포넌트를 쉽게 구성하고 관리할 수 있게 해주는 중요한 개념 중 하나입니다.

 

 

 

# 예시

#region Assembly Attribute Accessors

public string AssemblyTitle
{
    get
    {
        object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
        if (attributes.Length > 0)
        {
            AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
            if (titleAttribute.Title != "")
            {
                return titleAttribute.Title;
            }
        }
        return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
    }
}

public string AssemblyVersion
{
    get
    {
        return Assembly.GetExecutingAssembly().GetName().Version.ToString();
    }
}

public string AssemblyDescription
{
    get
    {
        object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
        if (attributes.Length == 0)
        {
            return "";
        }
        return ((AssemblyDescriptionAttribute)attributes[0]).Description;
    }
}

public string AssemblyProduct
{
    get
    {
        object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
        if (attributes.Length == 0)
        {
            return "";
        }
        return ((AssemblyProductAttribute)attributes[0]).Product;
    }
}

public string AssemblyCopyright
{
    get
    {
        object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
        if (attributes.Length == 0)
        {
            return "";
        }
        return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
    }
}

public string AssemblyCompany
{
    get
    {
        object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
        if (attributes.Length == 0)
        {
            return "";
        }
        return ((AssemblyCompanyAttribute)attributes[0]).Company;
    }
}

#endregion
728x90

'Programming > C# - Window' 카테고리의 다른 글

C#/ [STAThread]  (0) 2023.10.12
C#/ Export to CSV파일로 추출하기  (0) 2023.10.12
C#/ KeyDown 이벤트 핸들러  (0) 2023.10.12
C#/ namsespace(네임스페이스)  (0) 2023.10.12
C#/ 이벤트 핸들러 함수(Event Handler)  (0) 2023.10.12