Das direkte Übersetzen und Starten von C#-Dateien nennt Microsoft File-based Apps. Es ist auch möglich, einen Kestrel-Webserver innerhalb einer solchen App zu starten. Unten stehendes Beispiel zeigt eine ASP.NET Core Minimal WebAPI als eigenständige C#-Datei. Das Hosting erfolgt in dem in ASP.NET Core mitgelieferten Webserver Kestrel.
Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.
In der File-based App wird Microsoft.NET.Sdk.Web als SDK angegeben. Als NuGet-Pakete werden Microsoft.AspNetCore.OpenApi und Humanizer verwendet. Die Ahead-of-Time-Kompilierung, die in File-based Apps Standard ist, ist hier deaktiviert, um Warnungen des JSON-Serialisierers zu vermeiden.
Folgender Code zeigt den Webserver auf Basis von ASP.NET Core mit einem Minimal-WebAPI-Endpunkt und OpenAPI-Metadaten:
#:sdk Microsoft.NET.Sdk.Web #:package Microsoft.AspNetCore.OpenApi@10.*-* #:package Humanizer@2.14.1 #:property Version=1.1.4 #:property PublishAot=false using Humanizer; using Microsoft.OpenApi; // Webserver einrichten var builder = WebApplication.CreateBuilder(); builder.Services.AddOpenApi(); var app = builder.Build(); app.MapOpenApi(); // http://localhost:5000/openapi/v1.json app.MapGet("/", () => { // Daten für Operation var d = new Data { Version = "9.0", Release = "2024-11-12" }; var dotNet9Released = DateTimeOffset.Parse(d.Release); var since = DateTimeOffset.Now - dotNet9Released; return $"It has been {since.Humanize()} since .NET {d.Version} was released."; }); app.MapGet("/data", () => { var d = new Data { Version = "9.0", Release = "2024-11-12" }; return Results.Json(d); }); app.Run(); class Data { /// <summary> /// Version of the .NET release. /// </summary> public string? Version { get; set; } /// <summary> /// Release date of the .NET version. /// </summary> public string? Release { get; set; } }Start und Ausgabe des Webservers (Abb. 1)
(rme)











English (US) ·