چگونه یک پروژهی جدید NET. را در سال 2026 شروع کنیم 🚀
شروع یک پروژهی جدید NET. هیجانانگیز است، اما میتواند گیجکننده هم باشد. تصمیمهای زیادی باید گرفته شوند و انتخابهایی که در چند روز اول انجام میدهید، روی پروژهی شما برای ماهها یا حتی سالها تأثیر خواهند گذاشت.
بیایید شروع کنیم. 🔽
1️⃣ Directory.Build.props - Set Project-Wide Standards
فایل Directory.Build.props – تنظیم استانداردهای سراسری پروژه 🧱
هر solution در NET. باید با یک فایل Directory.Build.props شروع شود.
این فایل تنظیمات سراسری پروژه را تعریف میکند که روی تمام پروژههای داخل solution اعمال میشود.
بدون این فایل، مجبور میشوید همان تنظیمات را در چندین فایل csproj. تکرار کنید.
وقتی بخواهید یک تنظیم را تغییر دهید، باید همهی فایلهای پروژه را بهصورت دستی آپدیت کنید.
این کار باعث ناسازگاری و اتلاف زمان میشود. ⏳
ءDirectory.Build.props این مشکل را با متمرکز کردن تنظیمات در یک مکان حل میکند.
این فایل را در همان دایرکتوری فایل sln. ایجاد میکنید و MSBuild بهصورت خودکار آن را روی همهی پروژهها اعمال میکند.
این کانفیگی است که من برای هر پروژهی جدید استفاده میکنم:
<Project>
<PropertyGroup>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<AnalysisLevel>latest</AnalysisLevel>
<AnalysisMode>All</AnalysisMode>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
</Project>
در صورت نیاز، میتوانید Directory.Build.props را در هر سطحی از ساختار دایرکتوری پروژه قرار دهید و تنظیمات را در آن سطح override کنید.
توضیح هر تنظیم:
🔸️Nullable:
قابلیت nullable reference types را فعال میکند و به جلوگیری از خطاهای null reference کمک میکند. کامپایلر زمانی که ممکن است بهاشتباه از مقدار null استفاده کنید، هشدار میدهد.
🔹️ImplicitUsings:
ءnamespaceهای رایج را بهصورت خودکار در هر فایل اضافه میکند. دیگر نیازی نیست بنویسید: using System; یا using System.Linq;
🔸️AnalysisLevel:
سطح آنالیز کد را روی آخرین نسخه تنظیم میکند. جدیدترین بررسیهای کیفیت کد از سمت مایکروسافت فعال میشوند.
🔹️AnalysisMode:
تمام قوانین code analysis را فعال میکند و کاملترین بازخورد ممکن دربارهی کیفیت کد را میدهد.
🔸️TreatWarningsAsErrors:
اگر هر هشداری وجود داشته باشد، کامپایل متوقف میشود. این کار شما را مجبور میکند مشکلات را همان لحظه حل کنید و اجازه ندهید انباشته شوند. 🚨
🔹️CodeAnalysisTreatWarningsAsErrors:
همین سختگیری را روی هشدارهای code analysis هم اعمال میکند.
🔸️EnforceCodeStyleInBuild:
بررسی style کد را در زمان build اجرا میکند، نه فقط داخل IDE. یعنی در CI/CD هم تخلفات استایل شناسایی میشوند.
این تنظیمات یک پایهی بسیار قوی برای کیفیت کد ایجاد میکنند.
مشکلات را زود شناسایی میکنند و یکپارچگی را در کل solution حفظ میکنند. 🧠
2️⃣ Add Static Code Analysis Packages
اضافه کردن پکیجهای Static Code Analysis 🔍
کیفیت کد چیزی است که باید از روز اول به آن اهمیت بدهید.
پیروی از best practiceها بسیار راحتتر از این است که بعداً بخواهید آنها را اصلاح کنید.
برای این کار از static code analysis استفاده میکنیم. static analyzerها کد شما را بدون اجرا بررسی میکنند.
آنها اشتباهات رایج را پیدا میکنند، استانداردهای کدنویسی را enforce میکنند و باگهای احتمالی را قبل از رسیدن به production شناسایی میکنند.
این analyzerها هنگام کامپایل اجرا میشوند، پس هم در IDE و هم در CI/CD بازخورد فوری میگیرید. ⚡️