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

66 lines
3.7 KiB
Markdown

# 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](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, 결과 누락은 성공이 아니다. 대상 없는 템플릿도 제품 빌드 성공이 아니다.
```powershell
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 자체 변경은 별도로 검증한다.
```powershell
uv run --with pytest python -m pytest tests/harness -v -rs
uv run --with pytest python -m compileall -q scripts tests/harness
```
설정·결과 판정은 [Harness 운영 가이드](docs/HARNESS.md), Windows 설치와 첫 실행은
[환경 구축 가이드](docs/ENVIRONMENT_SETUP.md)를 따른다.