본문 바로가기

C#

C# 리플렉션으로 애셈블리 의존성 분석하기

애플리케이션을 개발할 때, 애셈블리 간 의존성을 파악하는 것은 유지보수와 최적화에 매우 중요합니다. C#의 리플렉션 기능을 활용하면 실행 중인 애셈블리나 로드된 애셈블리에서 참조하는 다른 애셈블리들을 쉽게 확인할 수 있습니다.

1. 애셈블리 의존성 분석이 필요한 이유

의존성 정보는 버전 충돌을 방지하고, 불필요한 참조를 제거하여 애플리케이션의 성능 향상과 배포 크기 감소에 도움을 줍니다.

2. C# 리플렉션으로 참조 애셈블리 확인하기

System.Reflection 네임스페이스의 Assembly 클래스를 사용하면 특정 애셈블리가 참조하는 다른 애셈블리를 가져올 수 있습니다.

3. 샘플 코드

using System;
using System.Reflection;

class AssemblyDependencyAnalyzer
{
    static void Main(string[] args)
    {
        if (args.Length == 0)
        {
            Console.WriteLine("분석할 애셈블리 경로를 입력하세요.");
            return;
        }

        string assemblyPath = args[0];
        try
        {
            var assembly = Assembly.LoadFrom(assemblyPath);
            Console.WriteLine($"애셈블리: {assembly.FullName}");
            Console.WriteLine("참조된 애셈블리 목록:");

            foreach (var referencedAssembly in assembly.GetReferencedAssemblies())
            {
                Console.WriteLine($" - {referencedAssembly.FullName}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"애셈블리 로드 실패: {ex.Message}");
        }
    }
}

위 코드는 명령행 인자로 받은 애셈블리 파일을 로드하고, 그 애셈블리가 참조하는 모든 애셈블리 정보를 출력합니다.

4. 활용 팁

이 방법을 통해 프로젝트 빌드 후 생성된 DLL이나 EXE 파일의 의존성을 쉽게 파악할 수 있습니다. 이를 자동화하여 전체 솔루션 내 의존성 트리를 구성하는 데도 활용할 수 있습니다.

리플렉션은 강력하지만 실행 성능에 영향을 줄 수 있으니, 필요한 시점에만 사용하기를 권장합니다.