TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #478 221
🚀 کاوش File-based Apps در #C در 10 NET.

سی‌شارپ همیشه یک‌جورهایی پُر از تشریفات و ساختارهای اضافی بوده، و خودمان هم این را خوب می‌دانیم. حتی ساده‌ترین برنامهٔ "Hello World" معمولاً به یک فایل راه‌حل (solution)، یک فایل پروژه (csproj)، و آن‌قدر کد boilerplate نیاز داشت که از خودتان می‌پرسیدید شاید بهتر بود از یک زبان اسکریپتی استفاده می‌کردید!

خب، مایکروسافت بالاخره صدایمان را شنید. با NET 10، File-based Apps. معرفی شده‌اند. و واقعاً وقتش بود.

📌 File-based Apps چیستند؟

ایده بسیار ساده است:
کد #C خود را در یک فایل تکی cs. بنویسید و مستقیم اجرا کنید. همین.

نیازی نیست برای یک اسکریپت کوچک که می‌خواهید چند فایل CSV را پردازش کنید یا یک API endpoint را تست کنید، یک ساختار کامل پروژه بسازید.

در این حالت همچنان همهٔ چیزهایی که #C را فوق‌العاده می‌کنند حفظ می‌کنید:
🔸️type safety
🔸️performance

کتابخانه‌های قدرتمند استاندارد💪🏻

اما حالا می‌توانید از #C برای اسکریپت‌های موقتی استفاده کنید؛ جاهایی که ساختن یک پروژهٔ کامل تبدیل به یک دردسر اضافه می‌شود.

و بله:

• می‌توانید NuGet package اضافه کنید
• می‌توانید پروژه‌های دیگر #C را reference کنید
• می‌توانید SDK خاصی را هدف قرار دهید
• و تنظیمات پروژه را فقط با یک فایل انجام دهید

همهٔ این کارها از طریق directive‌هایی که با :# شروع می‌شوند.

این قابلیت روی قابلیت top-level statements که در C# 9 معرفی شد ساخته شده. اگر قرار است اجازه دهیم مردم کلاس و متد Main را حذف کنند، خب چرا اجازه ندهیم کل فایل پروژه را هم حذف کنند؟

🚀 شروع کار با File-based Apps

فرض کنید می‌خواهید سریع بررسی کنید یک تاریخ مشخص مربوط به چه روزی از هفته است. کافی است یک فایل با نام date-checker.cs بسازید:
var targetDate = new DateTime(2025, 12, 31);
Console.WriteLine($"New Year's 2025 falls on a {targetDate.DayOfWeek}");
Console.WriteLine($"That's {(targetDate - DateTime.Today).Days} days from now");

و اجرا کنید:
dotnet run date-checker.cs

اولین باری که این دستور را اجرا می‌کنید، CLI یک مقدار جادوی پشت‌صحنه انجام می‌دهد:

🔹️یک پروژهٔ مجازی می‌سازد
🔹️کد را کامپایل می‌کند
🔹️همه‌چیز را cache می‌کند
🔹️و دفعات بعدی اجرای برنامه تقریباً لحظه‌ای است، چون به‌قدری هوشمند است که تشخیص دهد چیزی تغییر کرده یا نه.

📌مثال واقعی: پردازش سریع داده‌ها

در اینجا است که قضیه جذاب می‌شود. فرض کنیم لازم باشد خیلی سریع مقداری داده‌ی JSON را پردازش کنید و یک گزارش تولید کنید.

بیایید با System.Text.Json و CsvHelper یک کار عملی انجام بدهیم:
#:package CsvHelper@33.1.0
using System.Text.Json;
using CsvHelper;
using System.Globalization;

var json = await File.ReadAllTextAsync("sales_data.json");
var sales = JsonSerializer.Deserialize<List<SaleRecord>>(json);

var topProducts = sales
    .GroupBy(s => s.Product)
    .Select(g => new {
        Product = g.Key,
        TotalRevenue = g.Sum(s => s.Amount),
        UnitsSold = g.Count()
    })
    .OrderByDescending(p => p.TotalRevenue)
    .Take(10);

using var writer = new StreamWriter("top_products.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(topProducts);

Console.WriteLine("Report generated! Check top_products.csv");

record SaleRecord(string Product, decimal Amount, DateTime Date);

توجه کنید که در اینجا داریم package reference، عملیات async، LINQ و record type‌ها را با هم ترکیب می‌کنیم—همه در یک فایل واحد که کاملاً شبیه یک اسکریپت منسجم عمل می‌کند. این همان کاری است که معمولاً برای انجامش سراغ Python می‌رفتید، اما حالا می‌توانید در دنیای #C بمانید.
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →