Cysharp/ConsoleAppFramework
Source Generator로 컴파일 시 파싱 및 라우팅 코드를 생성하는, 의존성과 할당이 없고 AOT에 안전한 C# CLI 프레임워크입니다.
- 스타
- 2,234
- 포크
- 130
- 열린 이슈
- 2
- 마지막 커밋
- 어제
어떤 프로젝트인가요?
ConsoleAppFramework는 명령줄 애플리케이션을 만들기 위한 C# 라이브러리입니다. 특성과 런타임 리플렉션에 의존하는 대신, ConsoleApp.Run에 전달된 람다 식이나 메서드를 분석해 컴파일 시 인수 파싱 및 디스패치 코드를 생성합니다. 따라서 프레임워크 자체에 대한 런타임 의존성이 없는 애플리케이션을 만들 수 있어 어셈블리 크기를 줄이고 Native AOT와의 호환성을 확보합니다.
이 프레임워크는 C# 13을 사용하는 .NET 8을 대상으로 하며, 동기 및 비동기 명령, 여러 단계로 중첩된 명령, 명령 별칭을 지원합니다. 옵션 이름은 기본적으로 lower-kebab-case를 사용하며, 옵션 설명과 별칭은 XML 문서 주석에서 가져옵니다. 도움말과 버전 출력은 문자열 상수로 생성됩니다.
또한 CancellationToken을 통한 Ctrl+C 처리, 필터(미들웨어) 파이프라인, 종료 코드 관리, DataAnnotations 유효성 검사, 명령 클래스의 의존성 주입, 전역 옵션, ISpanParsable<T> 또는 JSON을 통한 파싱 기능도 제공합니다.
핵심 기능
- 01런타임 의존성 없이 컴파일 시 인수 파싱 및 명령 디스패치 코드를 생성합니다.
- 02Native AOT를 지원하며 리플렉션과 박싱을 사용하지 않습니다.
- 03CancellationToken을 통해 Ctrl+C와 SIGTERM을 처리해 정상적으로 종료할 수 있습니다.
- 04명령 실행 전후에 필터(미들웨어) 파이프라인을 제공합니다.
- 05옵션 별칭을 포함한 도움말을 XML 문서 주석에서 생성합니다.
- 06DataAnnotations 유효성 검사와 명령 클래스의 의존성 주입을 지원합니다.
활용 사례
- Native AOT 바이너리로 게시해야 하는 작고 빠르게 시작되는 CLI 도구를 만들 때.
- 의존성 주입을 활용해 대규모 .NET 명령줄 도구를 중첩 명령으로 구성할 때.
- 장시간 실행 작업을 Ctrl+C로 안전하게 취소해야 하는 내부 배치형 도구를 작성할 때.
빠른 시작
- 1
프로젝트에 NuGet 패키지를 추가합니다
dotnet add package ConsoleAppFramework - 2
Program에서 람다 또는 메서드를 사용해 ConsoleApp.Run을 호출합니다
사용 전 알아둘 점
- .NET 8 이상이 필요합니다. .NET 8 프로젝트에서는 C# 13 언어 버전을 명시적으로 설정해야 합니다.
포함된 컬렉션
토픽
자주 묻는 질문
- ConsoleAppFramework은(는) 무엇인가요?
- Source Generator로 컴파일 시 파싱 및 라우팅 코드를 생성하는, 의존성과 할당이 없고 AOT에 안전한 C# CLI 프레임워크입니다. ConsoleAppFramework는 명령줄 애플리케이션을 만들기 위한 C# 라이브러리입니다. 특성과 런타임 리플렉션에 의존하는 대신, ConsoleApp.Run에 전달된 람다 식이나 메서드를 분석해 컴파일 시 인수 파싱 및 디스패치 코드를 생성합니다. 따라서 프레임워크 자체에 대한 런타임 의존성이 없는 애플리케이션을 만들 수 있어 어셈블리 크기를 줄이고 Native AOT와의 호환성을 확보합니다.
- ConsoleAppFramework은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- ConsoleAppFramework은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- ConsoleAppFramework은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. ConsoleAppFramework의 마지막 커밋은 2026년 11월 6일입니다.
- ConsoleAppFramework은(는) 어디에 사용할 수 있나요?
- Native AOT 바이너리로 게시해야 하는 작고 빠르게 시작되는 CLI 도구를 만들 때. 의존성 주입을 활용해 대규모 .NET 명령줄 도구를 중첩 명령으로 구성할 때. 장시간 실행 작업을 Ctrl+C로 안전하게 취소해야 하는 내부 배치형 도구를 작성할 때.
- ConsoleAppFramework는 어떻게 설치하나요?
- 프로젝트에 NuGet 패키지를 추가합니다: dotnet add package ConsoleAppFramework Program에서 람다 또는 메서드를 사용해 ConsoleApp.Run을 호출합니다
- ConsoleAppFramework은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/Cysharp/ConsoleAppFramework
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Microsoft.Extensions.Logging 기반으로 UTF8 출력이 가능한 .NET 및 Unity용 무할당 텍스트·구조화 로거입니다.
자체 CoreLib, 런타임 및 SDK를 갖춘 C# 및 .NET CIL-to-WebAssembly 컴파일러로, 소형 독립 실행형 WASI Preview 2 컴포넌트를 생성합니다.
소스 생성 직렬화를 제공하는, .NET과 Unity용 고성능·저할당 C# YAML 1.2 라이브러리입니다.
FreeSql은 AOT와 코드 우선 마이그레이션을 지원하며, MySQL, PostgreSQL, SQL Server, Oracle, SQLite 및 여러 중국 국내 데이터베이스를 지원하는 .NET ORM입니다.