66 lines
3.7 KiB
Markdown
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)를 따른다.
|