Skip to main content

Posts

Showing posts from 2025

VS Code Planning mode

After the introduction of Plan mode in Visual Studio , it now also found its way into VS Code. Planning mode, or as I like to call it 'Hannibal mode', extends GitHub Copilot's Agent Mode capabilities to handle larger, multi-step coding tasks with a structured approach. Instead of jumping straight into code generation, Planning mode creates a detailed execution plan. If you want more details, have a look at my previous post . Putting plan mode into action VS Code takes a different approach compared to Visual Studio when using plan mode. Instead of a configuration setting that you can activate but have limited control over, planning is available as a separate chat mode/agent: I like this approach better than how Visual Studio does it as you have explicit control when plan mode is activated. Instead of immediately diving into execution, the plan agent creates a plan and asks some follow up questions: You can further edit the plan by clicking on ‘Open in Editor’: ...

Building our first MCP Resources enabled MCP Server with C#

In our first post , we explored what MCP resources are and why they matter. In a second post , we learned how to use resources in VS Code. A third post followed where I showed the same in Visual Studio. Now it's time to build—let's create our own MCP resource server from scratch using C# and the official .NET SDK. By the end of this post, you'll have a working MCP server that exposes both static and dynamic resources, Setting up our project Let's start by creating a new console application and adding the necessary packages. Step 1: Create the Project Open your terminal and run: dotnet new console -n ProjectDocsServer cd ProjectDocsServer Step 2: Add Required Packages We need two NuGet packages: # Add the MCP SDK (currently in preview) dotnet add package ModelContextProtocol --prerelease # Add hosting support for dependency injection dotnet add package Microsoft.Extensions.Hosting The ModelContextProtocol package provides the core MCP server functio...

Supercharge your AI Workflow with Github Copilot Custom Prompt Files

If you're using AI assistants in your development workflow, you've probably entered the same instructions dozens of times. What if I told you there's a better way? VS Code's custom prompt files let you create reusable, structured prompts with intellisense support—turning your ad-hoc AI interactions into a streamlined, professional workflow. What are Custom Prompt files? Custom prompt files are structured documents that define reusable prompts for AI assistants. Instead of manually typing out context, instructions, and tool configurations every time, you create a .prompt file that encapsulates everything in one place. Think of them as templates for your AI conversations—but with superpowers. Why superpowers? VS Code prompt files support a header section where you can define metadata and configuration, including: Tool specifications : Define which tools or capabilities the AI should have access to Context information : Set the stage with project-specif...

Help! My Application Insights telemetry stopped working.

I want to start this blog post by stating that I have a new hero and his name is Stijn. Let me explain why… I recently upgraded an older .NET Full Framework application to the latest Application Insights NuGet package. This to make the switch from the obsolete instrumentationkey to the newer connectionstring approach. After upgrading our packages.config file (yes, this project is so old) looked like this: Looking good right? Unfortunately, the same could not be said about our telemetry itself as our Application Insights logs remained awfully empty. I doublechecked all the config files, reinstalled the nuget packages, tried to explicitly force to flush the telemetry data, everything I could think of I tried. But nothing worked. I handed the problem over to another team member (Stijn, my new hero) and he found the solution. After debugging the Application Insights code he arrived at a no-op method: This method should have all the logic to read the configuration information ...

Hands-on with MCP Resources in Visual Studio

In the first post of this series, we explored what MCP resources are and why they're the overlooked piece of the MCP puzzle. In a second post we showed how to use MCP resources in Visual Studio Code. Before I continue with a next post on building your own MCP server, I first want to show you how Visual Studio handles MCP resources. Setting up your MCP server with resources in Visual Studio. Let's start by installing an MCP server that provides resources. We'll use the GitHub MCP Server as our example because it's widely used and demonstrates several resource patterns. We’ll use an mcp.json file to configure our mcp server: Create .vscode/mcp.json in your workspace root Add your server configuration: Save the file—Visual Studio will detect it and try to load the MCP server. If you now try to use this MCP server, you’ll notice that it doesn’t work yet. This is because we first need to authenticate and fetch an OAUTH token. Click on the …...

How to uninstall older .NET Core versions

Over time, your development machine and servers can accumulate multiple versions of .NET Core runtime and SDK installations. While having multiple versions is often necessary for compatibility, old versions you no longer need can consume valuable disk space and clutter your system. In this post, we'll walk through the process of safely identifying and uninstalling older .NET Core versions. Why uninstall old .NET Core versions? Before we dive into the how, let's understand why you might want to clean up old .NET installations: Disk Space : Each SDK version takes up several hundred megabytes Clarity : Fewer versions make it easier to manage your development environment Security : Older versions may have known vulnerabilities Maintenance : Keeping only what you need simplifies updates and troubleshooting Checking installed versions Before uninstalling anything, you need to know what's currently installed on your system. Open your terminal or command...

Hands-on with MCP Resources in VS Code

In the first post of this series, we explored what MCP resources are and why they're the overlooked piece of the MCP puzzle. Now it's time to get practical—let's dive into using resources in Visual Studio Code. By the end of this post, you'll know how to discover, browse, attach, and leverage MCP resources to supercharge your AI-powered development workflow. Understanding resources in VS Code When an MCP server exposes resources, VS Code makes them accessible in several ways: Browse all resources across all installed servers Browse resources per server to see what each provides Attach resources to chat as context for your conversations with Copilot View resources directly in the editor Save resources from tool call results to your workspace Think of resources as a context menu for your AI—a way to give Copilot exactly the information it needs without copy-pasting or explaining everything manually. Setting up your first MCP server wi...

MCP resources–The piece everyone overlooks

I think it is hard to miss the buzz around the Model Context Protocol (MCP), the so-called USB-C for AI apps. What I noticed is that the main focus is on tools . GitHub integration tools, file system tools, API tools—the list goes on. Tools are powerful, they're exciting, and they let AI agents take action in your development environment. But the protocol exposes 2 other types of primitives what almost nobody talks about: Resources and Prompts . And that's a shame, because both might be underrated in the entire MCP specification. My goal of this post is to give at least MCP Resources the attention it deserves. Let’s dive in! The tools-only tunnel vision When Anthropic released MCP, the developer community immediately gravitated toward tools. It makes sense—tools are action-oriented and flashy. They let your AI agent create GitHub issues, run terminal commands, and interact with APIs. That's the kind of capability that makes for great demos. But MCP wasn't d...

Vibe Coding with GitHub Spark: From idea to app in minutes (continued)

Yesterday we started exploring GitHub Spark. We looked at the basic prompting experience, the live preview but also explored the visual editing features and the specification generation (through a PRD.md file). But we didn't have the time to check out all the features.  Let's dive in... Seamless GitHub Integration This is where Spark really shines. Unlike standalone vibe coding tools, Spark can create a GitHub repository from your project. Once created you get a repository with GitHub Actions, Dependabot, and all the standard tooling. The code is synchronized so you don’t need to leave the vibe coding experience. Remark: This is also a great way to better understand what is going on behind the scenes. It allowed me to fix some issues where I wasn’t able to solve it inside GitHub Spark. Need more power? Open a Codespace directly from Spark and continue development with the full GitHub ecosystem at your fingertips. Upload a sketch or an image You don’t have to start...