피드로 돌아가기
Dev.toDevOps
원문 읽기
Runtime Load Error 방지를 위한 정적 Metadata 검증 도구 pefix 개발
A DLL wouldn't load on my Mac, so I built pefix
AI 요약
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 버전 충돌 및 누락 여부를 정적으로 검증하는 자동화 파이프라인 구축