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.

Spørgsmål til AI

For at få mest muligt ud af AI-værktøjer som ChatGPT, er det vigtigt at stille klare og præcise spørgsmål (og skabe det rigtige kontekst - se her). Her er nogle spørgsmål til denne side:

Grundlæggende spørgsmål til AI

  • Hvad betyder “fil-baseret” applikation i .NET 10?
  • Hvordan kører jeg en enkelt C# fil uden projektfiler?
  • Hvad er forskellen mellem fil-baseret og traditionel projektstruktur?
  • Hvordan bruger jeg NuGet pakker i fil-baserede applikationer?
  • Hvornår skal jeg bruge fil-baseret frem for traditionel projektstruktur?
  • Hvordan konverterer jeg en fil-baseret app til et rigtigt .NET projekt?
  • Hvad er shebang og hvordan bruger jeg det med C#?