День 2315. #ЧтоНовенького
Представляем dotnet run app.cs. Начало
В .NET 10 превью 4 упрощено начало работы с C#. Теперь вы можете запустить файл C# напрямую с помощью dotnet run app.cs
. Т.е. больше не нужно создавать файл проекта или создавать каркас целого приложения для запуска быстрого скрипта, тестирования фрагмента кода или простого эксперимента.
До сих пор для выполнения кода C# с помощью dotnet CLI требовалась структура проекта, включающая файл .csproj. Теперь с помощью «файловых приложений» (file-based apps), вы можете запустить автономный файл .cs напрямую, как и в случае с такими языками сценариев, как Python или JavaScript.
Это снижает порог входа для изучения C# и делает язык гораздо более привлекательным выбором для сценариев обучения, прототипирования или автоматизации:
- Быстрый старт, не требуется файл проекта — отлично подходит для обучения, экспериментов и небольших скриптов.
- Первоклассная интеграция CLI — никаких дополнительных инструментов, никаких зависимостей, только dotnet и файл .cs.
- Масштабируется до реальных приложений — это не отдельный диалект или среда выполнения. Когда скрипт вырастет, он может превратиться в полноценный проект, использующий тот же язык, синтаксис и инструменты.
Новые директивы уровня файла для файловых приложений C#
Файловые приложения также поддерживают набор мощных директив уровня файла, которые позволяют объявлять небольшое количество важных вещей, хранящихся в файлах проекта для стандартных приложений. Эти директивы делают файловые приложения более гибкими и выразительными, сохраняя совместимость с концепциями MSBuild.
Ссылаемся на NuGet-пакеты
Вы можете добавить ссылку на NuGet-пакет напрямую в файле .cs, используя директиву #:package:
#:package [email protected]
using System.Globalization;
using Humanizer;
Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-ru");
var net9Release = DateTimeOffset.Parse("2024-12-03");
var since = DateTimeOffset.Now - net9Release;
Console.WriteLine($"Прошло {since.Humanize()} с релиза .NET 9.");
// Прошло 25 недель с релиза .NET 9.
Указываем SDK
По умолчанию файловые приложения используют Microsoft.NET.Sdk SDK. Если вы создаете что-то вроде веб-API, вы можете изменить SDK с помощью директивы #:sdk:
#:sdk Microsoft.NET.Sdk.Web
Это сообщает инструментам, что файл следует обрабатывать так, как если бы он был частью веб-проекта, что позволяет использовать такие функции ASP.NET Core, как Minimal API и MVC.
Настраиваем MSBuild
Вы можете настроить дополнительные свойства сборки с помощью #:property:
#:property LangVersion preview
Это позволяет файловому приложению использовать расширенные языковые функции и таргетинг на платформу без необходимости в полном файле проекта.
Использование строк шебанг для шелл-скриптов
Файловые приложения также поддерживают строки шебанг (#!), что позволяет писать кроссплатформенные шелл-скрипты на C#, которые можно выполнять непосредственно в Unix-подобных системах:
#!/usr/bin/dotnet run
Console.WriteLine("Привет из скрипта C#!");
Вы можете сделать файл выполняемым и выполнить его напрямую:
chmod +x app.cs
./app.cs
Это позволяет сделать C# удобной опцией для утилит CLI, скриптов автоматизации и тулинга, никакой настройки проекта не требуется.
Окончание следует…
Источник: https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app/
>>Click here to continue<<