Category Archives: Development Tools

AI v každodenní praxi vývoje software [Robert Haken, GitHub Copilot Dev Day Praha, 30.4.2026]

Jak se každodenní vývoj softwaru v roce 2026 mění s AI: cesta od autocomplete k agentnímu workflow.

  • Cesta od Visual Studia s Copilot autocomplete k plně agentnímu workflow
  • Always-on context: od copilot-instructions.md k unifikovanému AGENTS.md
  • MCP servery – vlastní pro dokumentaci Havit Blazor, Azure DevOps MCP, Context7
  • Zlomový moment: „vyzvedni si tiket z Azure DevOps a implementuj“
  • Posun v zadávání tiketů – od mikromanagementu k byznysovému popisu funkčnosti
  • Volba modelu pro coding agenty: Sonnet 4.5 vs Opus 4.7 (3× multiplier) vs GPT-5
  • Konec éry klasického code-centric IDE: Visual Studio → VS Code Agents (Insider)
  • Paralelizace přes git worktrees – více session nad jedním repem současně
  • Bypass approvals a autopilot mode – yolo přístup s důvěrou v agenta
  • Skills, marketplace a pluginy pro sdílení instrukcí napříč projekty i týmem
  • Migrace repozitářů z Azure DevOps na GitHub – oficiální doporučení Microsoftu
  • Hybridní setup: repos v GitHubu, work-items a pipelines stále v Azure DevOps
  • Reálné náklady AI nástrojů pro full-time developera ($150–200/měsíc)

Sessionu na GitHub Copilot Dev Day Praha 30.4.2026 prezentoval Robert Haken.

🚀 Onboardujeme vývojářské týmy na AI – Copilot, Claude Code, agenti, MCP servery a disciplína, díky níž je vývoj s AI skutečně rychlejší: havit.cz/sluzby/ai-developer-onboarding

🛠️ Migrace z Azure DevOps na GitHub – přestěhujeme vám repozitáře, aby vaši vývojáři neztráceli kontakt s AI (jako jsme to udělali sami): havit.cz/products/github-migration

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.

Claude Code CLI – sdílení zkušeností s AI [Ondřej Václavek, Vzdělávací okénko, 19.2.2026]

Claude Code CLI v praxi: AI asistent pro .NET vývojáře — zkušenosti, skills, MCP servery a workflow.

Co se dozvíte

  • Claude Code CLI jako alternativa ke GitHub Copilotu (Rider místo Visual Studio)
  • Napojení na Azure DevOps přes MCP server a implementace tasků příkazem
  • Skills v Claude Code: implement a code review — jak fungují a jak je psát
  • Správa kontextového okna — příkaz clear a práce s dlouhými sezeními
  • Plugin marketplace a ekosystém skillů v Claude Code
  • Otevřená diskuze .NET vývojářů o zkušenostech s AI nástoji

Vzdělávací okénko prezentoval Ondřej Václavek.

.NET Aspire Introduction [Martin Goffa, HAVIT Vzdělávací okénko, 12.2.2026]

Co je .NET Aspire a proč ho použít pro multiservice .NET aplikace? Orchestrace, telemetry a Service Discovery v praxi.

  • Co je .NET Aspire a co není (rozdíl oproti Kubernetes)
  • Stavební kameny: AppHost, Service Defaults, integrace a Dashboard
  • Orchestrace Docker kontejnerů bez ruční konfigurace
  • Service Discovery a centralizovaná konfigurace závislostí
  • Telemetry: logy, trasování a metriky v Aspire Dashboardu
  • Integrace Redis, PostgreSQL a RabbitMQ přes NuGet balíčky
  • Live ukázka na HAVIT Project Template s Blazorem

Vzdělávací okénko prezentoval Martin Goffa.

Integrační testy konečně správně (Testcontainers) [Ondřej Václavek, Vzdělávací okénko, 11.12.2025]

Jak psát integrační testy v .NET správně? Testcontainers spustí reálný SQL Server z Dockeru přímo z C# testovacího kódu.

  • Rozdíl mezi integračními a unit testy – kde mockování nestačí
  • Proč jsou integrační testy v CI/CD pipeline problematické a jak to řeší Docker
  • Testcontainers – NuGet balíček pro spouštění Docker kontejnerů z C#
  • Integrace s ASP.NET Core přes WebApplicationFactory
  • Izolovaná databáze per test + fast restore (řádově 100 ms)
  • Paralelní spouštění testů bez vzájemného ovlivňování
  • Podpora více kontejnerů a Docker Compose
  • Reálná ukázka nasazení z projektu Edenred

Vzdělávací okénko prezentoval Ondřej Václavek.

WASM: AggregateException_ctor_DefaultMessage (Could not resolve type with token …)

Narazili jsme po instalaci .NET 9 SDK 9.0.204 (a nepomohl ani 9.0.300) na zajímavou chybu published Blazor WebAssembly front-endů (browser console výstup, front-end nenabíhá):

ManagedError: AggregateException_ctor_DefaultMessage (Could not resolve type with token 01000024 from typeref (expected class 'System.Reflection.Assembly' in assembly 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'))
    at an (dotnet.runtime.5nhp1wfg9b.js:3:26894)
    at Kt.resolve_or_reject (dotnet.runtime.5nhp1wfg9b.js:3:26449)
    at dotnet.runtime.5nhp1wfg9b.js:3:172714
    at dotnet.runtime.5nhp1wfg9b.js:3:172778
    at fr (dotnet.runtime.5nhp1wfg9b.js:3:35046)
    at Fc (dotnet.runtime.5nhp1wfg9b.js:3:172361)
    at dotnet.native.swgexbmoy7.wasm:0x1f1a4
    at dotnet.native.swgexbmoy7.wasm:0x1c8ae
    at dotnet.native.swgexbmoy7.wasm:0xea19
    at dotnet.native.swgexbmoy7.wasm:0x1ec88

První podezření bylo na trimming, nicméně když to zkrátím, tak se ukázalo, že se jedná o klasický problém buildů po instalaci nového SDK – je potřeba vymazat pracovní složky build-agentů, pokud každý váš build neběží na úplně čistém prostředí, ale používáte nějakou formu inkrementálního uspořádání. Když to převedu do roviny lokálního vývoje s Visual Studiem, je potřeba udělat Clean solution a vymazat složky bin a obj.

Proč to vůbec píšu? Kdyby někoho potkala stejná chyba, při troše štěstí vygooglí tento post a ušetří si čas s diagnostikou. U nás už jsme si poměrně zvykli, že když po instalaci nové verze SDK padá build, je potřeba před dalším bádáním vymazat pracovní složky build-agentů. Poprvé v historii se nám však stalo, že build úspěšně prošel (nepadal), ale výsledek build byl „vadný“ způsobem, který se projevil až při spuštění Blazor WASM front-endu v browseru.

YAML Pipelines – Azure DevOps [Jiří Kanda, Vzdělávací okénko, 27.3.2025]

V tomto videu se dozvíte vše o našich nových YAML pipelines v Azure DevOps, které prezentuje Jiří Kanda. Jirka vysvětluje, proč jsme se rozhodli přejít na YAML pipelines a jaké výhody nám to přináší.

  • Specifika našich buildů a důvody pro změnu na YAML pipelines.
  • Výhody YAML pipelines, jako jsou lepší parametrizace a paralelizace.
  • Základní syntaxe YAML a struktura YAML pipelines.
  • Paralelní běh jobů a použití více agentů.
  • Volitelné parametry buildů a task scheduler.
  • Podpora pro integrační testy a automatické pull requesty.
  • Použití deduplication a reprodukovatelnost buildů.
  • Validace zranitelností nuget balíčků a definice pipeline v projektech.
  • Problémy s manuálním spuštěním buildů.

Záznam ze Vzdělávacího okénka HAVIT z 27. března 2025.

Go to file member (Visual Studio)

Dlouho mě trápilo, jak se ve větším souboru rychle donavigovat na membera, jehož jméno znám.

Resharper/Rider mají přímo Go to file member Alt+ \.

Visual Studio 2022 má Go to member, který má ale výchozí scope na Current solution.

Je to takový ten klasický Go to… s prefixem m:, který prostě prohledává member, ale v celé solution, ani to nedává výsledky aktuálního souboru na první místo 😭. Chybí tam jakákoliv klávesová zkratka, nebo cesta, která by to otevřela předscopované na Current file.

OVŠEM!!! Má to ovšem jednu pro mě až dnes objevenou vlastnost, která to činí použitelným (pro mě) – pamatuje si to poslední scope, a to samostatně pro jednotlivé use-case. Má to navíc stejnou klávesovou zkratku Alt + \.

Takže:

Jednou to otevřete přes Go to member (Alt+\) a změníte si scope na Current file a napříště to tam zůstane zapamatováno.

Neovlivní to však ostatní use-case. Pro Go to all (Ctrl + T) nebo Go to file (Ctrl + Shift +T) si to u mě dále pamatuje scope Current solution.

Quality of live changer! 🤣🥳

Code review [Tomáš Wagner, Vzdělávací okénko, 29.11.2023]

Záznam ze Vzdělávacího okénka HAVIT, kde Tomáš Wagner ukazoval, jak lze využít pull-requesty v Azure DevOps (Azure Repos) na organizaci code-reviews.

.NET Performance Tuning – záznam a dema [Robert Haken, WUG Days 2023.2 Brno]

Záznam z přednášky pro konferenci WUG Days 2023.2 Brno z 11. září 2023.

Starší provedení přednášky, kde je méně profilingu a více ukázek kódu, najdete též na YT:

Demo samotné najdete tradičně na GitHub: https://github.com/hakenr/PerformanceTuningDotnetCoreDemos