Start Debugging

Daily notes on .NET, C#, EF Core, MAUI, Blazor, and Flutter - for developers who ship.

What Is Tool Calling and Why JSON Schemas Matter More Than Prompts
Tool calling is a protocol, not magic: the model emits a structured request matching a JSON Schema you supplied, your code runs it, and the result goes back as a message. The schema and its descriptions are rendered into the model's prompt and, with strict mode, into a decoding grammar, so they shape behaviour more reliably than any system-prompt instruction. Here is how it works on claude-sonnet-5-5 and OpenAI strict mode, with schema patterns that make invalid calls impossible.
How to add a strong-named assembly's full public key to InternalsVisibleTo in an SDK-style project
A signed assembly must name its friend by the full 320-character public key, not the token, or the build fails with CS1726 or CS0281. Get the key with sn -p and sn -tp, or with a cross-platform .NET script, then put it in the Key metadata of an InternalsVisibleTo item in the .csproj. Covers the PublicKey property fallback, Moq's DynamicProxyGenAssembly2 key, and the line-break trap.
How to set PostgreSQL session parameters such as search_path or statement_timeout on every EF Core connection with Npgsql
A SET statement run once is wiped by DISCARD ALL the moment Npgsql returns the connection to its pool. Put search_path and statement_timeout in the startup packet with the Search Path and Options connection string keywords, fall back to ALTER ROLE or a ConnectionOpened interceptor, and know why UsePhysicalConnectionInitializer silently loses its SET.
What Is the Difference Between an AI Agent and an AI Workflow?
In a workflow, your code decides the next step and the model fills in each step. In an agent, the model decides the next step and your code only executes it. That one question (who owns the control flow) determines cost, latency, testability and failure modes. Here is the distinction as Anthropic, Microsoft Agent Framework and LangGraph define it, with the same task built both ways in Python against claude-haiku-4-5 and claude-sonnet-5-5.
Page 1 of 96 Next ›