.NET 10 Preview 4에서 새롭게 선보인 기능으로, 이제 dotnet run app.cs 명령만으로 C# 파일을 직접 실행할 수 있는 방식이 도입됨 .NET 10 Preview 4는 파일 기반 앱에서 간단한 파일 내 디렉티브를 도입해 프로젝트 수준의 주요 설정을 .cs 파일 안에서 바로 지정할 수 있게 함 .cs 파일 내에 아래와 같이 NuGet 패키지를 직접 참조 가능함 기본 SDK는 Microsoft.NET.Sdk이나, 웹 API 등 특화 앱의 경우 아래처럼 SDK 변경 가능함 이를 통해 ASP.NET Core의 Minimal API, MVC 등 웹 기능 활성화 가능함 빌드 속성을 추가하고 싶을 때 아래와 같이 지정 가능함 언어 기능이나 플랫폼 타깃을 프로젝트 파일 없이 지정 가능함 Unix 계열 시스템에서 shebang(#!)을 활용해 C# 파일을 완전한 스크립트로 실행 가능함 실행 권한 부여 후 바로 실행 가능함 프로젝트 준비 없이 다양한 CLI 유틸리티, 자동화 스크립트 등의 개발 가능함 파일 기반 앱이 대형화되거나 프로젝트의 확장 기능이 필요해지면, 아래 명령어로 쉽게 일반적인 프로젝트로 전환 가능함 기존에도 CS-Script, dotnet-script, Cake 등 서드파티 툴을 통해 프로젝트 없이 C#을 실행하는 환경이 있었음 dotnet run app.cs를 통해 빠르고 쉬운 C# 입문이 가능하면서도, .NET 생태계의 모든 강력한 기능을 그대로 보장함
간편한 C# 시작: dotnet run app.cs 소개
이로 인해 빠른 스크립트 테스트나 아이디어 실험, 코딩 실습 등을 프로젝트 파일(.csproj) 없이도 즉시 시작 가능함
이 방식은 직관적이고 간단한 경험으로, 특히 C# 입문자에게 적합함
주요 특징
파일 기반 C# 앱을 위한 새로운 파일 수준 디렉티브
이 덕분에 MSBuild 개념과 호환되며 유연함이 향상됨NuGet 패키지 참조: #:package
SDK 지정: #:sdk
MSBuild 속성 설정: #:property
쉘 스크립트 실행을 위한 Shebang 지원
파일 기반 앱의 프로젝트 전환
예시
#:sdk Microsoft.NET.Sdk.Web
#:package Microsoft.AspNetCore.OpenApi@10.*-*
var builder = WebApplication.CreateBuilder();
builder.Services.AddOpenApi();
var app = builder.Build();
app.MapGet("/", () => "Hello, world!");
app.Run();
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.*-*" />
</ItemGroup>
</Project>
기존의 .NET 무프로젝트 실행 방법과의 차이
이런 도구들은 여전히 강력하며 고도화된 워크플로에 적합함
그러나 이제 내장 기능으로 즉시, 별도 설치 없이 시작할 수 있고
별도의 C# 변형이나 새로운 모드가 아닌 동일한 언어, 동일 컴파일러 기반임
즉, 코드를 작성하면서 그대로 프로젝트화가 자연스럽게 연결됨시작 방법
추가 정보
앞으로의 계획
향후 Visual Studio Code에서 파일 수준 디렉티브에 대한 IntelliSense, 성능, 디버깅 개선 및 다중 파일 지원, 실행 속도 향상 같은 기능 추가 예정임
.NET 10과 함께 피드백을 제공하면, 이 경험을 계속 발전시킬 예정임