Rate this post

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.