Files
2026-09-08 10:30:07 +09:00

3.7 KiB

C# .NET 8 제품 개발 프로젝트

이 저장소는 C#·.NET 8 제품 개발용 범용 템플릿이다. Harness와 scripts/의 Python 코드는 제품 개발을 지원하는 도구이며 제품의 목표나 기능이 아니다.

현재 확정 상태

  • 제품명·사용자·업무 기능·UI·배포 방식: 미정
  • 제품: C#, 기본 TFM net8.0, SDK 선택은 루트 global.json
  • Harness 실행·검증 환경: Windows, Python 3.10 이상
  • 신규 제품 테스트 기본값: xUnit v2 + VSTest
  • 빌드 진입점과 전체 테스트 목록: 실제 .sln / SDK 스타일 .csproj와 .harness/config.json version 2로 확인
  • 권장 배치: 제품 src/<ProjectName>/, 테스트 tests/<ProjectName>.Tests/
  • tests/fixtures/는 Harness 검증용 예제이며 실제 제품이 아니다.

미정 값을 예시로 채우거나 검증된 사실처럼 표현하지 않는다. 특정 UI, 계층, DI나 async 구조를 필요 없이 강제하지 않는다.

필수 규칙

  • CRITICAL: 공개 API 계약과 프로젝트 참조 방향을 유지한다. 제품 프로젝트에서 테스트 프로젝트를 참조하지 않는다.
  • CRITICAL: 새 기능과 버그 수정은 실패하는 테스트를 먼저 확인한 뒤 구현한다. 편집 훅의 대응 테스트 파일 존재 검사는 실제 red-green 증거를 대신하지 않는다.
  • CRITICAL: 새 빌드 경고를 추가하지 않는다. 빌드는 경고를 오류로 처리한다.
  • 신규 프로젝트는 nullable 검사와 implicit usings를 활성화한다. 언어 버전은 SDK 기본값을 사용하며 latest를 지정하지 않는다.
  • 변경 범위와 관련된 문서·코드·테스트만 읽고 수정한다. step의 context_files가 있으면 그 목록을 우선한다.
  • 실행 상태는 phases/{phase}/index.json을 기준으로 판단한다. 인계 문서는 상태를 대신하지 않는다.
  • phase 작업 시 docs/phase/{phase}/handoff.md를 확인하고, 종료 전에 최신 인계와 해당 stepN.md 기록을 갱신한다. 상세 양식은 docs/phase/README.md를 따른다.
  • 커밋 메시지는 conventional commits 형식을 따른다.

검증

실제 설정과 프로젝트 문서를 우선한다. 아래 제품 경로는 예시이므로 실제 target과 모든 testProjects로 바꾼다. 저장소 루트에서 SDK 확인 → 실제 TFM 평가 → restore → build → test를 실행한다. target에 포함된 각 프로젝트와 모든 test project에서 평가된 참조를 끝까지 따라가 TargetFramework/TargetFrameworks가 .NET 8이고 프로젝트가 저장소 내부인지 확인한다. 각 test project의 현재 TRX 결과와 실행 건수를 확인한다. 테스트 0건, skip-only, 결과 누락은 성공이 아니다. 대상 없는 템플릿도 제품 빌드 성공이 아니다.

dotnet --version
dotnet msbuild <each-project.csproj> -getProperty:TargetFramework,TargetFrameworks -getItem:ProjectReference -p:Configuration=Debug
dotnet restore <target.sln-or-csproj> -p:Configuration=Debug
dotnet restore <test-project.csproj> -p:Configuration=Debug
dotnet build <target.sln-or-csproj> -c Debug --no-restore -warnaserror
dotnet build <test-project.csproj> -c Debug --no-restore -warnaserror
dotnet test <test-project.csproj> -c Debug --no-build --no-restore --logger trx

Harness 자체 변경은 별도로 검증한다.

uv run --with pytest python -m pytest tests/harness -v -rs
uv run --with pytest python -m compileall -q scripts tests/harness

설정·결과 판정은 Harness 운영 가이드, Windows 설치와 첫 실행은 환경 구축 가이드를 따른다.