Microsoft представила одне з найбільш захоплюючих нововведень у .NET — нову команду dotnet run. Ця функція доступна в .NET і повністю змінює підхід до написання та запуску коду на C#.
Тепер більше не потрібно створювати повноцінний проєкт, щоб просто протестувати ідею або вивести «Hello World». Усе стало набагато простіше, легше і дружелюбніше для новачків.
У цій статті ми розберемо, що це за функція, як вона працює і як можна перейти від простого одиночного файлу до повноцінного .NET-проєкту всього за кілька кроків.
Початок роботи
Почнемо з повністю порожньої папки у Visual Studio Code — без файлів проєкту, без рішення, просто чистий робочий простір.
Зверніть увагу: у вас мають бути встановлені .NET 10 та C# Dev Kit для VS Code.
Створіть новий файл під назвою hello.cs і вставте в нього наступний код:
Console.WriteLine("Hello from .NET 10! This is a cool feature.");
Без просторів імен, без класу, без методу Main()
— один файл, один рядок, і все працює.
Запуск файлу
А ось і магія. Замість створення проєкту просто відкрийте термінал і введіть:
dotnet run hello.cs
І програма запуститься! Результат на екрані:
Hello from .NET 10! This is a cool feature.
.NET компілює та запускає файл безпосередньо — без додаткового налаштування та без проєкту. Під капотом код збирається в пам’яті та виконується як скрипт.
Це ідеально для швидких експериментів або одноразових ідей, які потрібно перевірити на льоту.
Додаємо функціональність: робота з датами
Тепер зробимо крок далі. Припустимо, ми хочемо вивести дату публікації, наприклад — 3 дні тому.
Додамо такий код:
var postedDate = DateTime.UtcNow.AddDays(-3); Console.WriteLine($"Posted date: {postedDate}");
Після запуску програма виведе повну дату та час, як і очікувалося. Але це не найзручніший варіант для користувача — рядок занадто громіздкий і нечитабельний.
Виправимо це.
Використання NuGet-пакетів без проєкту
Тепер можна використовувати NuGet-пакети навіть без створення проєкту.
Візьмемо пакет Humanizer, який форматує дати у зручному вигляді — наприклад, замість відмітки часу покаже «3 дні тому».
На початку файлу додамо:
#r "nuget: Humanizer, 2.14.1"
Далі підключимо простір імен:
using Humanizer;
Тепер змінимо виведення в консоль:
var postedDate = DateTime.UtcNow.AddDays(-3); Console.WriteLine($"Posted {postedDate.Humanize()}");
Запустіть знову:
dotnet run hello.cs
При першому запуску може знадобитися трохи часу, щоб завантажити пакет, але потім все виконується миттєво. Тепер результат виглядає так:
Posted 3 days ago
Просто, красиво та читабельно — саме те, що потрібно.
Створення мінімального API в одному файлі
Тепер підемо ще далі. Що, якщо потрібно створити невеликий API, але без повноцінного проєкту? Це тепер теж можливо.
Створіть новий файл api.cs і додайте в нього:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build();app.MapGet("/testapi", () => "Hello from .NET 10!"); app.Run();
Спробуйте запустити:
dotnet run api.cs
Ви отримаєте помилку: WebApplication не існує в поточному контексті. Це логічно — ми використовуємо функції мінімального API, але не вказали, що працюємо з Web SDK.
Підключаємо Web SDK
Щоб усе запрацювало, додамо на початок файлу рядок:
#sdk "Microsoft.NET.Sdk.Web"
Тепер знову запустимо:
dotnet run api.cs
І все працює! API запущено і прослуховує за адресою http://localhost:5000
.
Відкрийте Postman або браузер і перейдіть за маршрутом /testapi
. Відповідь:
Hello from .NET 10!
Мінімальний API повністю працює — і все це в одному файлі.
Перетворення файлу на повноцінний проєкт
Якщо файл стає занадто великим — ви додаєте більше ендпоінтів або middleware — можна легко перетворити його на повноцінний проєкт. Достатньо виконати команду:
dotnet project convert api.cs
.NET автоматично:
- створює нову папку проєкту,
- переносить туди
api.cs
, - генерує файл
.csproj
, - додає всі необхідні SDK та посилання на пакети.
Приклад створеного .csproj
:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> </PropertyGroup> </Project>
Тепер можна збирати, відновлювати та запускати проєкт як зазвичай.
Конвертація Hello World у проєкт
Те ж саме можна зробити з файлом hello.cs
:
dotnet project convert hello.cs
.NET створить консольний проєкт і автоматично додасть залежності, які використовувалися, включно з Humanizer.
Приклад .csproj
:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Humanizer" Version="2.14.1" /> </ItemGroup> </Project>
Усе готово до запуску — і жодного ручного налаштування.
Висновок
Ми пройшли шлях від одного C#-файлу з кількома рядками коду до:
- запуску його безпосередньо через
dotnet run
, - використання NuGet-пакетів,
- створення мінімального API в одному файлі,
- і конвертації всього в повноцінний проєкт.
І все це — без ручного налаштування. .NET 10 справді змінює те, як ми починаємо працювати з C#. Чи ви новачок, який створює прототип, чи досвідчений розробник, який пише скрипт, новий процес став чистішим, швидшим і зручнішим. Якщо стаття виявилася корисною — ставте вподобайку та слідкуйте за новими матеріалами про .NET 10, мінімальні API, AI-інтеграцію та інші оновлення екосистеми .NET.