피드로 돌아가기
When PowerShell Classes and Functions Depend on Each Other — How PSScriptBuilder Handles It
Dev.toDev.to
DevOps

Topological Sort 기반 PowerShell 의존성 자동 해결 및 인터리빙 빌드 구현

When PowerShell Classes and Functions Depend on Each Other — How PSScriptBuilder Handles It

Tim Hartling2026년 5월 4일3intermediate

Context

PowerShell 프로젝트의 Enum, Class, Function 간 순차적 정의 구조가 가지는 한계 분석. 특히 Class와 Function 간의 상호 참조로 발생하는 Cross-dependency 상황에서 수동 정의 순서 제어의 취약성 및 관리 복잡도 증가 문제 직면.

Technical Solution

  • 전체 프로젝트의 Dependency Graph 분석을 통한 구성 요소 간 상호 참조 관계 식별
  • 단순 타입별 분리 방식(Free Mode)의 한계를 극복하기 위한 Topological Sorting 기반의 Ordered Mode 도입
  • 개별 Placeholder({{ENUM_DEFINITIONS}}, {{CLASS_DEFINITIONS}}, {{FUNCTION_DEFINITIONS}})를 단일 통합 Placeholder({{ORDERED_COMPONENTS}})로 전환하여 출력 순서 제어
  • 의존성 분석 결과와 템플릿 설정 간의 불일치 시 빌드 실패 및 가이드 제공을 통한 정적 검증 강화
  • 향후 확장성을 고려하여 Cross-dependency가 없더라도 통합 블록을 사용하는 Hybrid Mode 지원

1. 상호 참조가 존재하는 컴포넌트 간의 정의 순서를 수동으로 관리하지 말고 의존성 그래프 기반의 자동 정렬 도입 검토

2. 템플릿 엔진 설계 시 개별 타입별 배치보다 의존성 해결 결과에 따른 동적 인터리빙 구조 채택 고려

3. 빌드 파이프라인 내에 Dependency Analysis 단계를 추가하여 런타임 로딩 에러를 빌드 타임 에러로 전이

원문 읽기