امکان اجرای مستقیم فایلهای سیشارپ در داتنت 10 با دستور dotnet run app.cs
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۳/۰۴ ۰۸:۳۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
dotnet run app.cs را فراهم میکند. این قابلیت، تجربه یادگیری و توسعه را برای برنامهنویسان، بهویژه مبتدیان، سادهتر کرده و به آنها اجازه میدهد بدون نیاز به درک پیچیدگیهای ساختار پروژه، بر نوشتن کد متمرکز شوند. در این مقاله، این ویژگی جدید بررسی شده و با ارائه مثالهای عملی و توضیحات دقیق، ارزش آن برای توسعهدهندگان داتنت تشریح میشود.dotnet new console بود. این فرآیند، فایلهایی مانند Program.cs و فایل پروژه با پسوند csproj تولید میکرد که حاوی تنظیمات پیچیدهای بود. برای مثال، کد زیر نمونهای از یک برنامه کنسول سنتی است:using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}Console.WriteLine("Hello, World!")، شامل مفاهیمی مانند فضاینام، کلاس، متد استاتیک (Static Method)، و آرگومانهای ورودی است که برای یک مبتدی ممکن است گیجکننده باشد. علاوه بر این، فایل پروژه XML و پوشههای اضافی مانند obj و bin به پیچیدگی محیط توسعه میافزایند.hello.cs با محتوای زیر کافی است:Console.WriteLine("Hello, C#!");dotnet run hello.cs، این فایل مستقیماً اجرا شده و خروجی Hello, C#! را در کنسول نمایش میدهد. این رویکرد، که به «اجرای فایل مستقیم» معروف است، نیاز به ایجاد پروژه یا درک مفاهیم پیشرفته را از بین میبرد و به توسعهدهندگان اجازه میدهد بر یادگیری زبان تمرکز کنند.DateTimeOffset buildStart = DateTimeOffset.Parse("2025-05-18");
TimeSpan timeSinceBuild = DateTimeOffset.Now - buildStart;
Console.WriteLine($"It has been {timeSinceBuild.Days} days since Build started.");dotnet run app.cs، خروجی به صورت یک عدد خام (مانند «2 days») نمایش داده میشود که ممکن است برای کاربر نهایی چندان خوانا نباشد.Humanizer استفاده کرد. این بسته امکان تبدیل خروجیهای خام به عبارات خواناتر را فراهم میکند. برای استفاده از این بسته در یک فایل تکفایلی، از دستورات نادیدهگیرنده (Ignore Directives) با پیشوند #: استفاده میشود:#: package Humanizer >= 2.0
using Humanizer;
DateTimeOffset buildStart = DateTimeOffset.Parse("2025-05-18");
TimeSpan timeSinceBuild = DateTimeOffset.Now - buildStart;
Console.WriteLine($"It has been {timeSinceBuild.Humanize()} since Build started.");#! شروع میشود، به سیستم عامل لینوکس اجازه میدهد فایل را به عنوان یک اسکریپت قابل اجرا تشخیص دهد. برای مثال:#!/usr/bin/env dotnet run --
Console.WriteLine("Hello from Linux!");chmod +x hello.cs، میتوان آن را مستقیماً با ./hello.cs اجرا کرد. این قابلیت، سیشارپ را به زبانی مشابه پایتون یا نود.جیاس (Node.js) تبدیل میکند که در آنها اجرای فایلهای اسکریپتی به سادگی انجام میشود. این ویژگی بهویژه برای توسعهدهندگانی که در محیطهای لینوکس مانند WSL (Windows Subsystem for Linux) کار میکنند، ارزشمند است.#: sdk Microsoft.AspNetCore.App
#: package Swashbuckle.AspNetCore >= 6.0
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();
app.MapGet("/", () => "Hello, Web API!");
app.Run();dotnet run webapi.cs، یک وب API روی localhost:5000 راهاندازی میشود که میتواند با ابزارهایی مانند Swagger تعامل داشته باشد. این رویکرد به توسعهدهندگان امکان میدهد بدون نیاز به ساختار پروژه پیچیده، برنامههای وب را آزمایش کنند.dotnet project convert hello.cs، فایل hello.cs به یک پروژه کامل تبدیل میشود که شامل فایل csproj و ساختار استاندارد داتنت است. این فرآیند، انتقال از حالت ساده به پروژههای پیچیدهتر را بدون نیاز به بازنویسی کد تسهیل میکند.dotnet run app.cs تحولی در تجربه توسعه با داتنت ایجاد کرده است. این ویژگی با حذف موانع اولیه مانند فایلهای پروژه و ساختارهای پیچیده، یادگیری سیشارپ را برای مبتدیان آسانتر میکند و به توسعهدهندگان حرفهای امکان آزمایش سریع ایدهها را میدهد. از اجرای برنامههای کنسول ساده تا توسعه وب API و پشتیبانی از شِبَنگ در لینوکس، این قابلیت انعطافپذیری بیسابقهای به سیشارپ افزوده است. با این حال، برای پروژههای بزرگتر، امکان تبدیل به پروژههای استاندارد همچنان حفظ شده است. توسعهدهندگان میتوانند با دانلود پیشنمایش چهارم داتنت 10 و افزونه سیشارپ در ویژوال استودیو کد (Visual Studio Code) این ویژگی را آزمایش کنند و بازخورد خود را برای بهبود نسخههای آتی ارائه دهند.