피드로 돌아가기
A DLL wouldn't load on my Mac, so I built pefix
Dev.toDev.to
DevOps

Runtime Load Error 방지를 위한 정적 Metadata 검증 도구 pefix 개발

A DLL wouldn't load on my Mac, so I built pefix

Salt Sato2026년 6월 17일1intermediate

Context

Windows x64 전용 Assembly Header로 인해 Mac 환경에서 .NET DLL 로드가 거부되는 플랫폼 불일치 문제 발생. 런타임 시점에만 발견되는 Dependency 누락 및 Version 충돌로 인한 디버깅 비용 증대.

Technical Solution

  • PE Header의 플랫폼 핀 설정을 AnyCPU로 변경하여 Cross-platform 호환성 확보
  • Assembly.Load 없이 Metadata만 읽어내는 정적 분석 방식으로 Runtime Side-effect 제거
  • 폴더 내 모든 Assembly Reference, Type, Member, Field, Interface의 정적 Resolve 로직 구현
  • False Alarm 배제를 통한 결정론적 검증으로 CI Gate 수준의 신뢰도 확보
  • Native-AOT 컴파일을 통한 단일 바이너리 배포로 외부 SDK 의존성 제거

- 런타임 로드 오류 방지를 위해 CI 단계에서 Static Loadability Preflight 도입 검토 - 플랫폼 종속적 DLL 배포 시 PE Header의 Target Platform 설정 확인 - Dependency 버전 충돌 및 누락 여부를 정적으로 검증하는 자동화 파이프라인 구축

원문 읽기