This website uses cookies
Read our Privacy policy and Terms of use for more information.
MCP C# SDK v2.0, Visual Studio Agent & .NET Testing | Issue #27
Aug 17, 2026
Announcing v2.0 of the official MCP C# SDK
The official MCP C# SDK has reached v2.0 alongside the 2026-07-28 MCP specification. The update makes HTTP transport stateless by default, removes protocol-level session requirements, standardizes the HTTP surface for conventional routing infrastructure, and introduces multi-round-trip requests for interactive tools. Despite the scale of the revision, Microsoft says v2.0 remains backward compatible with existing v1 clients, servers, and stable application code—making this a major step toward scalable MCP deployments built on ASP.NET Core.
.NET Blog • Jeff Handley
Visual Studio July Update — Meet the New Agent, Powered by the GitHub Copilot SDK
Visual Studio’s July update introduces a new Agent in preview, built on the same GitHub Copilot SDK that powers the Copilot CLI. It aims to complete development tasks with less back-and-forth and offer a more consistent experience across GitHub, the CLI, VS Code, and Visual Studio. The update also adds built-in .NET and Azure skills, organization-level custom instructions, branch attachments in Copilot Chat, and improved MSVC toolset discovery.
Visual Studio Blog • Mark Downie
From generated code to trusted code with a unit-test agent
Microsoft’s open-source code-testing-generator is a polyglot agent designed to produce useful unit tests rather than tests that merely pass. It studies the repository, detects its language, framework, conventions, and test commands, then plans, writes, and validates the tests against the full workspace. It also checks assertion quality, requested scenarios, and test discovery. In Microsoft’s benchmark, the specialized agent completed 140 of 152 tasks, compared with 120 for stock Copilot using the same model.
.NET Blog • Amaury Levé
Discover Agent Skills from MCP servers in .NET
.NET agents can now discover and load Agent Skills on demand from an MCP server through the Microsoft.Agents.AI.Mcp package. Instead of bundling skills into every application or copying folders across deployments, teams can publish them once and let multiple agents retrieve updates without redeployment. Skills can be exposed as SKILL.md resources or archives, with validation and configurable extraction limits. This offers a cleaner distribution and governance model for shared organizational expertise.
Microsoft Agent Framework • Sergey Menshykh
Analyze MSBuild Binary Logs with Copilot in VS Code
The MSBuild Binlog Analyzer for VS Code, now in preview, turns .binlog investigation into a conversation with GitHub Copilot. Developers can ask why a build failed, identify slow targets and critical paths, compare builds, inspect incremental-build behavior, and detect regressions without leaving the editor. The extension is grounded in real build data through Microsoft.AITools.BinlogMcp MCP server and can also help apply and verify fixes using before-and-after logs.
.NET Blog • Yuliia Kovalova and Jan Krivanek
Annual .NET target updates for the AWS SDK for .NET | Amazon Web Services
AWS is introducing a predictable annual schedule for adding and removing .NET targets from the AWS SDK for .NET. Beginning with V4.1 in November 2026, the SDK will add .NET 10 and .NET 11 while removing the long-retired .NET Core 3.1 target. Future releases will track the yearly .NET cycle and keep at most two LTS targets, while .NET Framework 4.7.2 and .NET Standard 2.0 remain supported for the foreseeable future.
Amazon Web Services | Norm Johanson
How to Optimize SQL Queries: 20 Proven Best Practices
Slow queries drag down every app. Learn 20 proven techniques to optimize SQL queries in PostgreSQL - indexes, covering indexes, sargable filters, smarter joins, materialized views, functions in where, pagination techniques, improve joins, choose correct join type, improve subqueries, improve transactions. And when to trust the query planner.
Anton Dev Tips • Anton Martyniuk
Unit of Work Pattern in .NET
Nikola Knezevic clarifies that Unit of Work is a transaction boundary for related changes—not simply a class that aggregates repositories. With EF Core, DbContext already provides change tracking and coordinated commits, so an additional wrapper is rarely necessary. A custom implementation becomes more useful with tools such as Dapper, where the application owns the connection and transaction. The article demonstrates shared transactions, explicit commit and rollback behavior, and scoped dependency injection.
Nikola Knezevic
Query Performance Tuning in Azure DocumentDB: A Practical Guide - Azure DocumentDB Blog
This practical walkthrough follows a realistic Azure DocumentDB query through the full optimization process. It shows how to identify slow queries, use explain() to understand wasted work, add indexes progressively, and apply the Equality-Sort-Range rule when designing a compound index. It also covers index-backed sorts and covered queries, giving developers a repeatable way to move from queries that merely work to queries that continue scaling as collections grow.
Azure DocumentDB Blog • Patty Chow
Strengthening NuGet Supply Chain Security: Reducing API Key Lifetime - .NET Blog
NuGet.org is shortening API-key lifetimes to reduce the risk of stolen publishing credentials. Starting August 17, 2026, new keys will have a maximum lifetime of 30 days, and all keys created before that date will expire on November 1, 2026. Package maintainers should review publishing workflows now. Microsoft recommends moving GitHub Actions and GitLab pipelines to NuGet Trusted Publishing, which uses OpenID Connect and short-lived credentials instead of storing reusable publishing secrets.
.NET Blog • .NET Team
Beyond Chat: live Speech-to-Text with Foundry Local and C# - .NET Blog
Bruno Capuano demonstrates a .NET 10 console app that transcribes microphone audio locally in real time using Foundry Local and NVIDIA’s 0.6B Nemotron speech model. Foundry Local handles model discovery, download, caching, hardware-specific execution providers, loading, and unloading, while NAudio captures the microphone stream. The Windows-only sample returns interim and final transcriptions without a cloud API or API key and shows when specialized provider SDKs are more suitable than general Microsoft.Extensions.AI abstractions.
.NET Blog • Bruno Capuano
Adding a Clone method to a C# record
Gérald Barré explains why a C# record cannot declare its own public instance Clone() method: records already have compiler-generated cloning behavior used by with expressions. When an explicit and more discoverable API is useful, an extension method can expose sample.Clone() while implementing the copy as sample with { }. This keeps the record’s built-in copy semantics intact and gives API consumers a familiar method name.
Meziantou's blog • Gérald Barré
Understanding the Fetch Metadata HTTP headers: Sec-Fetch-Site and friends
Andrew Lock explains the four browser-controlled Fetch Metadata headers: Sec-Fetch-Dest, Sec-Fetch-Site, Sec-Fetch-Mode, and Sec-Fetch-User. Together, they tell a server where a request originated, how it was initiated, and how the response will be used. Because JavaScript cannot modify them, applications can use this context to reject suspicious cross-site requests and strengthen CSRF defenses. The article also lays the groundwork for the Fetch Metadata-based CSRF protection coming in .NET 11.
Andrew Lock | .NET Escapades
Multi-Tenant .NET: Shared Database with Schema Separation
Barret Blake explores schema-per-tenant isolation with EF Core and SQL Server. Moving each tenant into its own schema removes the need for global query filters, tenant columns, and SaveChanges stamping, but introduces a critical requirement: the tenant schema must be included in EF Core’s model cache key through IModelCacheKeyFactory. The approach improves isolation while retaining one database and connection pool, with tradeoffs around per-schema model memory, provisioning, and migrations.
Barret Blake
.NET 11 Performance Edition
Steven Giesel benchmarks .NET 11 Preview 6 against .NET 10 and explores several runtime improvements. Highlights include eliminating boxing in generic Enum.Equals, removing redundant Span and null checks, faster time-zone handling and DateTime.Now, improved Guid parsing, and optimized LINQ Min and Max operations. The results show meaningful gains in selected scenarios, although the author stresses that these are local benchmarks and developers should measure performance against their own workloads and hardware.
Steven Giesel
Login or Subscribe to participate