تفکیک دستورالعملهای مبتنی بر مسیر (Path-Specific Instructions) در پروژههای بزرگ NET.
نویسنده: وحید نصیری
تاریخ: ۱۴۰۵/۰۵/۲۹ ۱۲:۴۱
آدرس: www.dntips.ir
applyTo و الگوهای Globbing، رفتارهای Copilot را دقیقاً متناسب با پوشه یا فایل در حال ویرایش تنظیم کنید..github/ برای یک پروژه چندلایهای داتنت:.github/
├── copilot-instructions.md # قوانین عمومی و زبان C#
└── instructions/
├── api.instructions.md # لایه ارائه و Web API
├── data.instructions.md # لایه دسترسی به داده و EF Core
└── tests.instructions.md # لایه آزمونها و Mockingapi.instructions.md)--- applyTo: "**/Controllers/**/*.cs" --- # استانداردهای کنترلرهای Web API - کنترلرها باید باریک (Thin) باشند؛ هیچگونه منطق بیزینس یا کوئری مستقیم دیتابیس نباید در کنترلر قرار گیرد. - همیشه از DTOها و رکوردهای صریح برای ورودی و خروجی استفاده کن. - پاسخهای HTTP باید کدهای وضعیت متناسب (200, 201, 400, 404, 422) داشته باشند. - ویژگیهای امنیت و دسترسی (Authorization Attributes/Policies) را حفظ کن. - تمامی اکشنها باید پارامتر `CancellationToken` را بپذیرند.
data.instructions.md)--- applyTo: "**/Infrastructure/Data/**/*.cs" --- # استانداردهای لایه دسترسی به داده و EF Core - کوئریهای خواندنی را ملزم به استفاده از `.AsNoTracking()` کن. - از بارگذاریهای تکراری و مشکلات N+1 با بهکارگیری دقیق `.Include()` و `.ThenInclude()` یا Projection مستقیم پرهیز کن. - هرگز موجودیتها (Entities) را مستقیماً از طریق متدهای دسترسی بدون تبدیل (Map) در لایههای دیگر افشا نکن. - تغییرات ساختار دیتابیس در Migrationها باید بدون حذف ناخواسته ستونها (Lossless) تولید شوند.
tests.instructions.md)--- applyTo: "**/*Tests.cs" --- # استانداردهای تستنویسی - فریمورک تست: xUnit و اعتبارسنجی با FluentAssertions. - ساختار تمام تستها باید مبتنی بر الگوی Arrange-Act-Assert (AAA) باشد. - تمرکز تستها باید روی «رفتار و خروجی نهایی» باشد، نه جزئیات پیادهسازی داخلی متدها. - حالتهای مرزی (مقادیر صفر، اعداد منفی، رشتههای خالی و استثناها) باید پوشش داده شوند.