환경 설정
필수 요구사항
섹션 제목: “필수 요구사항”1. .NET 10.0 SDK
섹션 제목: “1. .NET 10.0 SDK”# 버전 확인dotnet --version# 출력 예: 10.0.100
# 설치 (Windows)winget install Microsoft.DotNet.SDK.10
# 설치 (macOS)brew install --cask dotnet-sdk
# 설치 (Linux - Ubuntu)sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.02. IDE 설정
섹션 제목: “2. IDE 설정”VS Code + C# Dev Kit
섹션 제목: “VS Code + C# Dev Kit”- C# Dev Kit 확장 설치
JetBrains Rider
섹션 제목: “JetBrains Rider”- .NET 10.0 SDK가 자동 감지됩니다
- File -> Settings -> Build, Execution, Deployment -> Toolset and Build에서 SDK 경로 확인
Visual Studio 2022
섹션 제목: “Visual Studio 2022”- Visual Studio 2022 17.12 이상 권장
- 워크로드: ”.NET 데스크톱 개발” 또는 “ASP.NET 및 웹 개발”
프로젝트 설정
섹션 제목: “프로젝트 설정”소스 코드 클론
섹션 제목: “소스 코드 클론”# Functorium 프로젝트 클론git clone https://github.com/hhko/Functorium.gitcd functorium빌드 확인
섹션 제목: “빌드 확인”# 전체 솔루션 빌드dotnet build Functorium.slnx
# 전체 테스트 실행dotnet test --solution Functorium.slnx개별 프로젝트 실행
섹션 제목: “개별 프로젝트 실행”# Part 1 첫 번째 장 테스트 실행dotnet test --project Docs.Site/src/content/docs/tutorials/cqrs-repository/Part1-Domain-Entity-Foundations/01-Entity-And-Identity/EntityAndIdentity.Tests.Unit
# 튜토리얼 전체 빌드/테스트dotnet build Docs.Site/src/content/docs/tutorials/cqrs-repository/cqrs-repository.slnxdotnet test --solution Docs.Site/src/content/docs/tutorials/cqrs-repository/cqrs-repository.slnx기본 using 문
섹션 제목: “기본 using 문”프로젝트에서 사용할 기본 using 문입니다:
// 도메인 엔티티using Functorium.Domains.Entities;
// Repositoryusing Functorium.Domains.Repositories;
// Query 어댑터using Functorium.Applications.Queries;
// Usecaseusing Functorium.Applications.Usecases;
// Specificationusing Functorium.Domains.Specifications;LanguageExt 함수형 타입을 사용하는 경우:
using LanguageExt;using LanguageExt.Common;using static LanguageExt.Prelude;각 프로젝트 실행 방법
섹션 제목: “각 프로젝트 실행 방법”테스트 실행
섹션 제목: “테스트 실행”# 특정 프로젝트 테스트 실행dotnet test --project Docs.Site/src/content/docs/tutorials/cqrs-repository/Part1-Domain-Entity-Foundations/01-Entity-And-Identity/EntityAndIdentity.Tests.Unit
# 특정 테스트만 실행dotnet test --filter "Create_ReturnsAggregate_WhenValid"전체 솔루션 테스트
섹션 제목: “전체 솔루션 테스트”# 솔루션 루트에서dotnet test --solution Functorium.slnx프로젝트 구조
섹션 제목: “프로젝트 구조”각 튜토리얼 프로젝트는 다음과 같은 구조를 가집니다:
01-Entity-And-Identity/├── EntityAndIdentity/ # 메인 프로젝트│ ├── EntityAndIdentity.csproj # 프로젝트 파일│ └── Domains/ # 도메인 클래스│ ├── Product.cs│ └── ProductId.cs│└── EntityAndIdentity.Tests.Unit/ # 테스트 프로젝트 ├── EntityAndIdentity.Tests.Unit.csproj ├── xunit.runner.json └── ProductTests.csFunctorium 의존성
섹션 제목: “Functorium 의존성”각 프로젝트는 Functorium 라이브러리를 참조합니다. 프로젝트 파일에서 다음과 같이 설정됩니다:
<ItemGroup> <ProjectReference Include="../../../../../../../../../Src/Functorium/Functorium.csproj" /></ItemGroup>Functorium이 제공하는 CQRS 관련 주요 타입:
| 네임스페이스 | 주요 타입 | 용도 |
|---|---|---|
Functorium.Domains.Entities | Entity<TId>, AggregateRoot<TId>, IEntityId | 도메인 엔티티 |
Functorium.Domains.Repositories | IRepository<TAggregate, TId> | Command 측 Repository |
Functorium.Applications.Queries | IQueryPort<TEntity, TDto> | Query 측 어댑터 |
Functorium.Applications.Usecases | ICommandRequest, IQueryRequest | Usecase 인터페이스 |
Functorium.Applications.Persistence | IUnitOfWork, IUnitOfWorkTransaction | 영속화 |
문제 해결
섹션 제목: “문제 해결”.NET SDK가 인식되지 않는 경우
섹션 제목: “.NET SDK가 인식되지 않는 경우”# PATH 환경 변수 확인echo $PATH
# Windows의 경우 시스템 환경 변수에 다음 경로 추가# C:\Program Files\dotnetIDE에서 IntelliSense가 작동하지 않는 경우
섹션 제목: “IDE에서 IntelliSense가 작동하지 않는 경우”- IDE 재시작
dotnet restore실행.vs또는.vscode폴더 삭제 후 재시작
LanguageExt 관련 빌드 오류
섹션 제목: “LanguageExt 관련 빌드 오류”LanguageExt.Core 패키지가 올바르게 복원되었는지 확인합니다:
dotnet restoredotnet buildFAQ
섹션 제목: “FAQ”Q1: .NET 10.0 SDK 대신 이전 버전을 사용해도 되나요?
섹션 제목: “Q1: .NET 10.0 SDK 대신 이전 버전을 사용해도 되나요?”A: 이 튜토리얼의 프로젝트는 .NET 10.0을 대상으로 빌드됩니다. 이전 버전에서는 LanguageExt와 Functorium의 일부 API가 호환되지 않을 수 있으므로, .NET 10.0 SDK 설치를 권장합니다.
Q2: 전체 솔루션 빌드 없이 개별 프로젝트만 테스트할 수 있나요?
섹션 제목: “Q2: 전체 솔루션 빌드 없이 개별 프로젝트만 테스트할 수 있나요?”A: 네, 각 장의 테스트 프로젝트 폴더에서 dotnet test를 실행하면 해당 프로젝트만 빌드/테스트됩니다. 전체 솔루션 빌드는 모든 프로젝트의 정합성을 확인할 때 사용합니다.
Q3: LanguageExt 관련 빌드 오류가 발생하면 어떻게 해야 하나요?
섹션 제목: “Q3: LanguageExt 관련 빌드 오류가 발생하면 어떻게 해야 하나요?”A: 먼저 dotnet restore로 패키지를 복원하세요. 그래도 해결되지 않으면 bin과 obj 폴더를 삭제한 뒤 다시 빌드합니다. LanguageExt.Core 패키지가 NuGet 소스에서 정상적으로 다운로드되는지도 확인하세요.
환경 설정이 완료되었다면, CQRS 패턴의 전체 구조를 파악할 차례입니다.