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.