ASP.NET core Razor View Runtime Compilation

Microsoft hat (nicht erst zur BUILD) in aspnetcore 3 die automatische Kompilierung von Razor Views (cshtml) entfernt. Als Grund wird angegeben, das man sich vom Roslyn Compiler verabschieden möchte. Das bedeutet in der Praxis, das beim erstellen des Projektes in Visual Studio 2 Binarys erzeugt werden. Eine Exe (das ist neu) mit dem Namen des Projekts und eine DLL mit dem Namen+View des Projektes. In der DLL steckt dann auch der HTML Code der Razor View.

Für eine klassische Website ist das wenig optimal.

Nun lässt sich das Verhalten mit dynamischer Übersetzung  von geänderten Razor Views wieder herstellen.

Installieren Sie für die Laufzeitkompilierung das Nuget Paket Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Diese muss noch aktiviert werden in der startup.cs. Was man unter asp.net core noch als UseMvc und AddMvc in den Services gefunden hat, wird nun aufgeteilt in verschiedene je nach Einsatzzweck. (AddMvc, AddControllers, AddRazorPages)

Für eine Razor Page ohne MVC Controller reicht ein AddRazorPages. Dies sollte auch im Default Template einer Web Anwendung zu finden sein. Dort wird dann auch der neue Json Parser (statt JSON.NET)  konfiguriert und am Schluss noch ergänzt um die Runtime Compilation.

   1:   services.AddRazorPages()
   2:                  .AddNewtonsoftJson().AddRazorRuntimeCompilation();

Zum Testen die Website mit F5 starten. Dann mit einem File Editor im Pages Verzeichnis die index.cshtml verändern und im Browser F5 drücken. Bei mir dauert das ein paar Sekunden und die Seite ist neu geladen mit dem veränderten Inhalt.

Kommentare sind geschlossen