Gå til indholdet

Filbaseret afvikling (.NET 10)

.NET 10 ændrer alt for prototyper og scripts. Nu kan du skrive blot en enkelt .cs-fil og køre den med dotnet run app.cs, uden at lave projektfiler eller mapper. Én fil, direkte igangsætning – som i Python eller JavaScript.

Info

Denne funktion er eksperimentel og kan ændre sig i den endelige version af .NET 10, der forventes i november 2025. Den er designet til at gøre hurtig udvikling og prototyping lettere.

Simpelt og hurtigt

Forestil dig din “hello world” gemt i app.cs:

Console.WriteLine("Hello, world");

Og du kører det med:

dotnet run app.cs

Det kører bare. Ingen .csproj. Intet boilerplate.

Vil du bruge NuGet-pakker inline, specificere SDK eller MSBuild-egenskaber, kan du tilføje direktiver direkte i samme fil. For eksempel:

#:package Humanizer@2.14.1
using Humanizer;
using System.Globalization;
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US");
Console.WriteLine($"{(DateTime.Now - DateTime.Parse("2024-11-01")).Humanize()} since .NET 9");

Eller du kan bytte til Web-SDK og skrive en mini-API direkte:

#: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();

Shebang

Shebang giver dig mulighed for at gøre filen eksekverbar på Unix-systemer:

#!/usr/bin/dotnet run
Console.WriteLine("Hej fra C#-script!");

Efter chmod +x app.cs kan du starte med ./app.cs.

Konvertering til .NET-projekt

Når dine scripts vokser, konverterer du automatisk til et egentligt .NET-projekt med dotnet project convert app.cs. Den opretter en mappe, .csproj og oversætter dine inline-direktiver til det korrekte MSBuild-format.

Bag scenen skaber værktøjet et virtuelt .csproj i hukommelsen. Det parser direktiverne, bygger via MSBuild og kører. Ikke en ny C#-dialekt – det er præcis den samme compiler og runtime.

Summering

Den nye “file‑based app”‑oplevelse sænker barrieren for .NET. Den giver muligheder for hurtig eksperimentering, uddannelse og scripts uden opsætning, samtidig med at du senere kan skalere til fuld .NET‑struktur.