- .NET 10 Preview 4부터는, 이제 단일 C# 파일을
dotnet run app.cs로 바로 실행할 수 있는 기능이 추가되어, 프로젝트 파일 없이도 C# 코드 실행이 가능해짐 - 파일 기반 앱(file-based apps) 덕분에, Python이나 JavaScript처럼 간단한 스크립트 실행, 테스트, 아이디어 실험이 한층 쉬워짐
- NuGet 패키지 참조, SDK 지정, 빌드 속성 설정 등도 파일 내 디렉티브로 관리할 수 있어 개발 유연성이 향상
- shebang 지원으로 유닉스 계열에서 CLI 유틸리티, 자동화 스크립트 등에도 활용 가능
- 필요시 프로젝트 기반 앱으로 매끄럽게 변환 가능해, 학습 및 프로토타입에서 본격적인 앱 개발까지 자연스럽게 연계됨
dotnet run app.cs란 무엇인가
- 기존에는
dotnetCLI로 C# 코드를 실행하려면 반드시 프로젝트(.csproj) 구조가 필요했음 - 이제는 단일 .cs 파일만으로 바로 실행 가능하여, 진입 장벽이 크게 낮아짐
- 스크립트 언어나 자동화, 실험, 학습 등 다양한 용도에 적합함
- CLI 통합으로 추가 도구 설치 없이 dotnet만 있으면 바로 사용 가능함
- 코드가 커지면 동일한 언어와 도구로 프로젝트 기반 앱으로 확장 가능함
파일 수준 디렉티브 지원
- 파일 기반 앱에서도 프로젝트의 주요 설정들을 직접 .cs 파일 내에 디렉티브로 선언할 수 있음
-
NuGet 패키지 참조
#:package디렉티브로 NuGet 패키지를 바로 참조할 수 있음- 예시:
#:package Humanizer@2.14.1 using Humanizer; var dotNet9Released = DateTimeOffset.Parse("2024-12-03"); var since = DateTimeOffset.Now - dotNet9Released; Console.WriteLine($"It has been {since.Humanize()} since .NET 9 was released.");
- 예시:
-
SDK 지정
#:sdk디렉티브로 SDK 종류 지정 가능- 예시:
#:sdk Microsoft.NET.Sdk.Web - ASP.NET Core 기능(최소 API, MVC 등)도 활성화 가능
- 예시:
-
MSBuild 속성 설정
#:property로 빌드 속성 직접 지정 가능- 예시:
#:property LangVersion preview
- 예시:
-
쉘 스크립트용 shebang 지원
- 파일 맨 위에
#!/usr/bin/dotnet run을 넣어, 유닉스 계열에서 실행 파일로 바로 사용할 수 있음- 예시:
#!/usr/bin/dotnet run Console.WriteLine("Hello from a C# script!"); - 실행 권한 부여 후 바로 실행:
chmod +x app.cs ./app.cs
- 예시:
- 파일 맨 위에
프로젝트 기반 앱으로의 변환
- 앱이 커지거나 더 많은 기능이 필요할 때,
dotnet project convert app.cs명령어로 프로젝트로 손쉽게 변환 가능 - 디렉티브는 .csproj 파일 속성, 참조 등으로 자동 변환됨
-
변환 예시
- 아래와 같은 파일:
#: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>
기존 C# 스크립트 방식과의 차이
- 그동안 커뮤니티 툴(CS-Script, dotnet-script, Cake 등)로 C# 스크립트 실행이 가능했지만, 별도 도구 설치와 설정 필요
- 이제는 별도 설치나 모드 없이 동일한 C# 컴파일러와 언어를 사용해, 진입 장벽 없이 바로 코드 실행 가능
시작 방법
- .NET 10 Preview 4 설치
- Visual Studio Code 사용 시, C# Dev Kit와 최신 프리릴리즈 버전의 C# 확장(2.79.8 이상) 설치 필요
.cs파일 생성 후 바로 코드 작성- 터미널에서
dotnet run hello.cs실행 - 필요시
dotnet project convert hello.cs로 프로젝트로 변환
더 알아보기
향후 계획
- VS Code 내 파일 기반 앱 지원 및 디렉티브용 IntelliSense 향상, 성능 개선, 디버깅 지원 강화 예정
- 다중 파일 지원과 실행 속도 개선 등 추가 기능도 개발 중
dotnet run app.cs는 C#을 더욱 쉽게 접근할 수 있게 하면서, .NET의 강력함을 그대로 제공함- 프로토타이핑, 교육, 프로덕션 개발까지 더 빠르게 전환할 수 있는 기반 제공