# 어셈블리(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
'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 |