Category Archives: ASP.NET Core

Pomalé .NET buildy/testy? Možná za to může nainstalované preview SDK

Pokud máte na stroji nainstalované .NET preview SDK (např. .NET 11 preview), může dotnet CLI defaultně sahat právě po něm — u mě to způsobilo (zřejmě nějaký bug v preview), že buildy i testy běží o hodně pomaleji než s release SDK. Projeví se to i u AI coding agentů, kteří volají dotnet z příkazové řádky.

Řešením je do rootu solution přidat global.json se zákazem preview-SDK:

{
"sdk": {
"version": "10.0.0",
"allowPrerelease": false,
"rollForward": "latestFeature"
},
"test": {
"runner": "Microsoft.Testing.Platform"
}
}

Klíčový je allowPrerelease: falsedotnet přeskočí preview-SDK a vezme release. Verzi v version upravte podle své cílové verze .NET.

Aktuální podobu udržujeme v naší šabloně projektu: havit/NewProjectTemplate-Blazor/global.json.

MCP server do vlastní aplikace (+ VSCode Agents) [Robert Haken, Vzdělávací okénko, 9.4.2026]

MCP server do vlastní aplikace v .NET / C# – implementace, Entra ID auth, VS Code Agents.

  • Co je MCP (Model Context Protocol) server a proč ho přidat do své aplikace
  • Implementace MCP serveru v ASP.NET Core – NuGet ModelContextProtocol.AspNetCore
  • Definice tools přes atributy a auto-discovery z assembly
  • Custom MCP Tool Authorization atribut s rolemi (analogie k [Authorize])
  • Stateless HTTP transport, mapování endpointu a obcházení error middleware
  • Nejtěžší část: autentizace přes Entra ID + JWT bearer tokeny
  • Registrace klientské aplikace v Entra – VS Code built-in client vs. custom client_id / client_secret
  • Připojení MCP serveru v Claude Desktop, VS Code a Claude Code CLI
  • Praktická ukázka VS Code Agents (Insider) – paralelní agenti, autopilot, worktree workflow
  • Trendy: CLI jako SDK/harness, ústup klasického code-centric IDE

🚀 Potřebujete MCP server pro vlastní produkt? Postavíme vám MCP gateway pro libovolné API, aplikaci či databázi: havit.cz/products/mcp

🛠️ Goran – ERP/PM pro IT firmy (nástroj použitý v ukázce): goran.cz

Novinky v .NET 10 a výhled na .NET 11 [WUG Dev Day Praha, 26.1.2026]

Záznam z přednášky pro konferenci WUG Dev Day Praha z 26. ledna 2026.

Co se dozvíte

  • .NET 10/11 timeline – STS prodlouženo na 2 roky, LTS na 3 roky
  • C# 14 – extension members: nová syntaxe s klíčovým slovem extension
  • C# 14 – klíčové slovo field v getter/setter, null conditional assignment (?=)
  • C# 14 – partial constructors/events, user-defined compound assignment operátory
  • .NET 10 Runtime – JIT devirtualizace, deabstrakce a výkonové optimalizace
  • BCL – string comparer s numeric ordering, LINQ left/right join, WebSocket stream
  • System.Text.Json – cyclic references v source generators, strict preset
  • SDK – dotnet tool exec, file-based apps (jednořádkové C# scripty), package pruning
  • ASP.NET Core – OpenAPI 3.1, validace na Minimal API, ochrana před open redirect
  • Blazor – přehled nejvýraznějších novinek v .NET 10
  • Výhled na .NET 11 a C# 15

Slides

Novinky v .NET 9 a výhled na .NET 10 – záznam a slides [Robert Haken, WUG Days Brno 9/2025]

Záznam z přednášky pro konferenci WUG Days Brno z 5.9.2025, kde jsem telegraficky představoval novinky z „.NET 9 vlny“ a pár přicházejících v „.NET 10 vlně“.

Slides

FluentValidations vs Today [Robert Haken, Vzdělávací okénko, 5.6.2025]

Po půlnoci hlásil validátor: datum vystavení faktury nesmí být v budoucnosti – ale porovnával se včerejším datem. Proč?

  • Záhadný bug v Blazor WebAssembly: fakturační validátor po půlnoci odmítá dnešní datum
  • FluentValidation validátory jsou scoped-service – v Blazor WASM to prakticky znamená singleton
  • Pravidla jako LessThanOrEqualTo(datum) se vyhodnotí jednou v konstruktoru a hodnotu zmrazí
  • Řešení: Must(x => x <= timeProvider.GetLocalNow()) – lambda se vyhodnocuje při každé validaci
  • Přidej custom error message – Must generuje pouze generické hlášení

Vzdělávací okénko prezentoval Robert Haken.

OpenAPI + Scalar UI [Alexandr Hájek, Vzdělávací okénko, 22.5.2025]

Swagger UI v .NET 9 na odchodu? Scalar UI – moderní alternativa s dark mode, vyhledáváním a výměnou za jeden řádek kódu.

  • Proč Microsoft v .NET 9 opouští Swagger generátor a co ho nahrazuje
  • Scalar UI: dark/light mode, integrované vyhledávání a classic layout jako Swagger
  • Jak přidat Scalar UI do projektu – výměna jednoho řádku kódu
  • Konfigurace OIDC autentizace s Microsoft OpenAPI generátorem (access token, scopes)
  • Kompatibilita Scalar UI se staršími verzemi .NET a jinými OpenAPI generátory
  • MIT licence – open source s aktivní komunitou a rychlými opravami

Vzdělávací okénko prezentoval Alexandr Hájek.

await foo?.DoAsync() [Vzdělávací okénko, 20.3.2025]

Krátce o pasti zápisu await foo?.DoAsync(), kdy použití null-conditional accessu vede na await null a NullReferenceException.

Novinky v .NET 9 a výhled na .NET 10 – záznam a slides [Robert Haken, WUG Dev Day, 28.2.2025]

Záznam ze Vzdělávacího okénka HAVIT z 28. února 2025, kde jsem telegraficky představoval novinky z „.NET 9 vlny“ a přicházející v „.NET 10 vlně“.

Slides

Novinky v .NET 9 – záznam a slides [Robert Haken, WUG Days Brno, 5.9.2024]

Záznam ze Vzdělávacího okénka HAVIT z 5. září 2024, kde jsem telegraficky představoval novinky přicházející v „.NET 9 vlně“.

Slides

ASP.NET Core SignalR – základní seznámení [Jiří Kanda, HAVIT Vzdělávací okénko, 27.6.2024]

Záznam ze Vzdělávacího okénka HAVIT z 27. června 2024, kde Jiří Kanda povídal o SignalR v ASP.NET Core.