<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dotnet on lukaswalter.dev</title>
    <link>https://www.lukaswalter.dev/tags/dotnet/</link>
    <description>Recent content in Dotnet on lukaswalter.dev</description>
    <image>
      <title>lukaswalter.dev</title>
      <url>https://www.lukaswalter.dev/images/LW%20Dev%20Thumbnail.png</url>
      <link>https://www.lukaswalter.dev/images/LW%20Dev%20Thumbnail.png</link>
    </image>
    <generator>Hugo -- 0.150.0</generator>
    <language>en</language>
    <lastBuildDate>Wed, 10 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.lukaswalter.dev/tags/dotnet/index.xml" rel="self" type="application/rss+xml" /><item>
      <title>Agent Framework RAG for Agents: Giving Your Agent the Right Context</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_13/</link>
      <pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_13/</guid>
      <description>How to connect Microsoft Agent Framework agents to private application knowledge without stuffing full documents into the prompt.</description>
    </item><item>
      <title>Build and deploy an MCP server with .NET and Azure Container Apps</title>
      <link>https://www.lukaswalter.dev/posts/mcp-server-dotnet-aca/</link>
      <pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/mcp-server-dotnet-aca/</guid>
      <description>How to build a Streamable HTTP MCP server with the official .NET SDK, containerize it, deploy it to Azure Container Apps, and call it from a C# client.</description>
    </item><item>
      <title>Microsoft Agent Framework Workflows: When to Use Them and When to Stay in C#</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_12/</link>
      <pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_12/</guid>
      <description>When to use Microsoft Agent Framework workflows for explicit, observable, resumable, long-running orchestration, and why normal C# code is often the better choice.</description>
    </item><item>
      <title>Agents as Tools in Microsoft Agent Framework</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_11/</link>
      <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_11/</guid>
      <description>How to delegate work between Microsoft Agent Framework agents by exposing focused agents as function tools, and when this is better than manual routing or a workflow engine.</description>
    </item><item>
      <title>Why CancellationToken Matters More in .NET AI Systems</title>
      <link>https://www.lukaswalter.dev/posts/cancellation-token/</link>
      <pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/cancellation-token/</guid>
      <description>Why CancellationToken matters more in .NET AI systems, and how to pass it through LLM calls, streaming responses, embeddings, retrieval, and tool execution.</description>
    </item><item>
      <title>Manual Multi-Agent Routing in .NET</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_10/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_10/</guid>
      <description>How to route requests between specialized Microsoft Agent Framework agents with a cheap intent agent, structured output, and a normal C# switch statement.</description>
    </item><item>
      <title>Extending .NET Agents with MCP and Agent Skills</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_9/</link>
      <pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_9/</guid>
      <description>How to extend Microsoft Agent Framework agents with MCP tools and Agent Skills, when to use each model, and what trust boundaries to keep around external servers, local files, and scripts.</description>
    </item><item>
      <title>Structured Output in .NET Agents</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_8/</link>
      <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_8/</guid>
      <description>Use structured output in Microsoft Agent Framework to turn LLM responses into typed C# objects that can be validated, tested, and used safely in application code.</description>
    </item><item>
      <title>Tools and Dependency Injection in Microsoft Agent Framework</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_7/</link>
      <pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_7/</guid>
      <description>How to expose small C# methods as Microsoft Agent Framework tools, pass application services through dependency injection, and protect side-effecting actions.</description>
    </item><item>
      <title>RAG with EF Core and pgvector</title>
      <link>https://www.lukaswalter.dev/posts/rag-efcore-pgvector/</link>
      <pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/rag-efcore-pgvector/</guid>
      <description>How to build RAG retrieval in .NET by storing embeddings in PostgreSQL with pgvector and querying them through EF Core.</description>
    </item><item>
      <title>Dynamic Agent Context with AIContextProvider</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_6/</link>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_6/</guid>
      <description>How to use AIContextProvider in Microsoft Agent Framework to inject dynamic memory, reduce tool-token overhead, add guardrails, and extend agent context at runtime.</description>
    </item><item>
      <title>Controlling Token Growth with Chat Reducers</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_5/</link>
      <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_5/</guid>
      <description>How to control token growth in Microsoft Agent Framework with message-count and summarizing chat reducers, including setup, tradeoffs, and when each approach fits.</description>
    </item><item>
      <title>State Management and Chat History</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_4/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_4/</guid>
      <description>How to manage short-term and persistent conversation state in Microsoft Agent Framework using AgentSession, StateBag, and a custom ChatHistoryProvider.</description>
    </item><item>
      <title>Use the Aspire Dashboard Standalone</title>
      <link>https://www.lukaswalter.dev/posts/quick-tip-4/</link>
      <pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/quick-tip-4/</guid>
      <description>Stop setting up complex observability stacks for local dev. Learn how to run the Aspire Dashboard as a standalone, lightweight OTLP viewer for any language.</description>
    </item><item>
      <title>Chat vs. Streaming: Don&#39;t Keep Your Users Waiting</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_3/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_3/</guid>
      <description>When to use RunAsync vs. RunStreamingAsync in Microsoft Agent Framework, and why streaming improves chat UX while blocking calls still fit structured outputs and background work.</description>
    </item><item>
      <title>Zero to First Agent</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_2/</link>
      <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_2/</guid>
      <description>How to initialize the Microsoft Agent Framework, connect to Azure, OpenAI or local Ollama models and execute your first asynchronous agent run.</description>
    </item><item>
      <title>Microsoft Agent Framework: Introduction</title>
      <link>https://www.lukaswalter.dev/posts/agentframework_1_1/</link>
      <pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/agentframework_1_1/</guid>
      <description>How Microsoft Agent Framework builds on Microsoft.Extensions.AI, when it supersedes Semantic Kernel for new .NET agent systems, and where MCP, context providers, and workflows fit.</description>
    </item><item>
      <title>Context Compression in .NET</title>
      <link>https://www.lukaswalter.dev/posts/quick-tip-3/</link>
      <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/quick-tip-3/</guid>
      <description>Reduce token cost and latency in .NET by compressing RAG context with a cheap summarizer model or an IChatClient middleware pipeline.</description>
    </item><item>
      <title>Debugging LLM Timeouts in .NET</title>
      <link>https://www.lukaswalter.dev/posts/debugging-llm-timeouts-in-.net/</link>
      <pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/debugging-llm-timeouts-in-.net/</guid>
      <description>A repeatable local setup for timeout triage in .NET LLM workloads using Aspire, OpenTelemetry, and Ollama.</description>
    </item><item>
      <title>Local LLMs in .NET</title>
      <link>https://www.lukaswalter.dev/posts/local-llms-in-.net/</link>
      <pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/local-llms-in-.net/</guid>
      <description>A minimal .NET starter for running local LLMs with Ollama &#43; OllamaSharp behind IChatClient—no API keys, streaming chat, system prompts, and capped conversation history.</description>
    </item><item>
      <title>Eval-first: Why “It Worked Once” Is Not a Sign of Quality</title>
      <link>https://www.lukaswalter.dev/posts/eval-first-in-.net/</link>
      <pubDate>Sat, 07 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.lukaswalter.dev/posts/eval-first-in-.net/</guid>
      <description>Why eval-first matters for LLM apps and how to use datasets, scoring rubrics, and CI quality gates to catch regressions early.</description>
    </item>
  </channel>
</rss>
