# اجرای پروژهٔ .NET
این منبع C# برای .NET 10 نوشته شده و در محیط تهیهٔ بسته اجرا نشده است: **UNVERIFIED**. از پوشهٔ `dotnet` و در محیط دورریختنی با SDK 10 و دسترسی NuGet اجرا کنید:

```bash
dotnet --info
dotnet restore Readiness.sln
dotnet test Readiness.sln --no-restore --logger "trx;LogFileName=net004.trx" --results-directory TestResults
```

نسخهٔ SDK، کد خروج هر فرمان، خروجی TRX و فایل lock ساخته‌شده توسط restore را نگه دارید. اولین restore نسخه‌های انتقالی را حل می‌کند؛ فایل lock واقعی پیش از اجرا تولید نشده است. پس از ایجاد lock، اجرای بعدی را با `dotnet restore Readiness.sln --locked-mode` تکرار کنید.

وابستگی‌ها نسخهٔ صریح آموزشی دارند؛ ادعای آخرین نسخه یا تأیید سازگاری از اجرای واقعی نشده است. پیش از استفادهٔ عملی نسخه‌ها را بازبینی کنید. sourceهای آن‌ها در فهرست منابع هستند.

هفت مورد تست پس از گسترش Theory برنامه‌ریزی شده‌اند: درخواست عادی، دو اعتبارسنجی تنظیم، دو حالت health، timeout و telemetry، و چرخهٔ شروع/توقف. تعداد و نتیجه باید از TRX واقعی خوانده شود.

نمونهٔ اجرای فرایند در Bash، در همین پوشه:
```bash
Service__Name=lesson-service Dependency__TimeoutMs=100 dotnet run --project ReadinessService
```
در PowerShell:
```powershell
$env:Service__Name='lesson-service'
$env:Dependency__TimeoutMs='100'
dotnet run --project ReadinessService
```
نشانی bind را از خروجی همان اجرا بردارید؛ `/sample`، `/ready` و `/live` را بررسی و با Ctrl+C توقف را درخواست کنید. مقادیر را در shell آزمایشی موقت تنظیم کنید. نبود تنظیم باید شروع را رد کند؛ زمان‌بندی واقعی را از اجرا بخوانید.

تست‌ها dependency شبکه‌ای ندارند. health از وضعیت مصنوعی استفاده می‌کند؛ listener و logger در حافظه capture می‌کنند. تست canary فقط خروجی پاسخ و لاگ‌های همین مسیر را بررسی می‌کند؛ گواه پالایش همهٔ داده‌ها نیست. تست توقف پایان host را می‌سنجد و تخلیهٔ همهٔ درخواست‌ها یا رفتار container را ثابت نمی‌کند. انتقال به پروفایل دیگر باید جدا اجرا و ثبت شود.


منابع همراه: [CSV](../resources/NET-004-T1.csv), [rubric](../resources/rubric.md), [source links](../resources/source_links.md).
