Actualités
Rigorous Yet Sustainable Human Reviews in the AI Era
Mandatory AI checks paired with manual spikes for complex changes keep developers sharp. Teams can boost velocity by skipping peer reviews on low-risk PRs and using AI approvals, provided most developers are code owners and teams are small. By Ben L
pnpm 12 Rewrites Package Manager in Rust, Accelerating Installs While Preserving pnpm 11 Workflows
pnpm 12 has transitioned to a native Rust implementation, maintaining compatibility with pnpm 11 commands, flags, and formats. This update enhances startup and filesystem performance, particularly when using existing caches. Community feedback highli
Presentation: Instrumentation at Scale: Having Your Performance Cake and Eating It Too
Brian Martin discusses the real-world performance costs of metrics libraries and shares strategies for low-overhead, "fearless" instrumentation. Drawing from his work at IOP Systems, he explores atomic primitives, per-CPU sharding, lock-free histogra
Cohere’s Parse 5 Promises Efficient Multi-Modal Information Extraction From Complex Documents
Cohere has launched Parse 5, a multimodal foundation model designed to extract structured data from complex enterprise documents. The 2.3-billion-parameter system converts visually rich PDFs into Markdown while providing bounding box coordinates for
Register Now for JetBrains GameDev Day 2026
Every game starts with an idea. Getting it into production means navigating code, tools, pipelines, performance bottlenecks, architectural trade-offs, and all the small decisions that only reveal their consequences once a project begins to scale. On
Swiggy Uses 350+ Features and Multi-Task MLP to Predict Customer Lifetime Value
Swiggy developed an in house predicted lifetime value model using more than 350 pre order features and a multi task MLP for Food and Instamart. Adding order count as an auxiliary task reduced model parameters by 63% while improving predictive perform
OpenAI Details GPT-Live’s Architecture for Continuous Stateful Voice Interaction
OpenAI recently published an engineering account of GPT-Live. It described how they designed the system to maintain continuous voice interaction while separating latency-sensitive media processing from broader application work. The live path contains
Presentation: Beyond Prompting: Context Engineering for Production-Grade AI
Ricardo Ferreira discusses moving beyond simple prompt engineering to build production-grade AI applications. He shares practical architectural strategies for integrating long-term and short-term memory using Redis, managing LLM token limits via summ
Cloudflare Adds Optional OAuth Scopes, Letting Developers Mark What Users May Decline
Cloudflare has added optional OAuth scopes, letting client owners mark which permissions users may deselect at consent. The company names MCP servers as the motivating case, since agents request the union of everything they might do. Partial consent
Boost Your .NET Projects with Spargine: Simplify Thread Pool Execution with ThreadPoolHelper
Spargine's ThreadPoolHelper simplifies concurrent execution in .NET applications by providing reusable APIs that manage thread pool operations. It supports single and batch operations, bounded concurrency, timeout management, cooperative cancellation
OpenClaw 2.0 Releases with Simplified Setup and Collaborative Agents
OpenClaw has released OpenClaw 2.0, a major update to the open-source personal AI agent that changes its installation process, browser interface, memory, skills, automations, plugins, security, and collaboration features. By Daniel Dominguez
InfoQ previews the September cohorts of its online certification programs
A preview of the September cohorts of the InfoQ Online Certification Programs, and the facilitators leading them: Luca Mezzalira, Michelle Brush, Zichuan Xiong, and Premanand Chandrasekaran. By Artenisa Chatziou
Presentation: Beyond Line Charts: Why Some Diversity in Telemetry Visualization Is Long Overdue
Yao Yue discusses the fundamental limitations of standard line charts for system observability. Drawing from 15 years of operating large-scale systems, she shares how engineering leaders and software architects can transform telemetry data - moving b
HCP Terraform Positions Itself as the Control Plane for AI-Driven Infrastructure
HashiCorp is positioning HCP Terraform as the governance and control plane for a new generation of AI-driven infrastructure, arguing that the rapid adoption of coding agents is shifting the biggest infrastructure challenge from writing configuration
DoorDash’s Flux Runs 130,000 Engineering Tasks through Cloud-Based Agents
DoorDash has moved engineering agent workloads from developer laptops to its Flux cloud platform. The platform automated 130,000 engineering tasks in one month and supports more than 25,000 automated code reviews weekly. Flux uses isolated Firecracke
Java News Roundup: GraalVM, Jakarta Data, JNoSQL, Azul Payara, WildFly, Quarkus, Atmosphere
This week's Java roundup for August 24th, 2026, features news highlighting: the GA release of Atmosphere 4.0; point releases of GraalVM, Azul Payara and Quarkus; a maintenance release of WildFly 41; milestone releases of Jakarta Data and Eclipse JNoS
Article: Eliminating Long-Lived Credentials in GCP with Workload Identity Federation
Long-lived GCP service account keys are secrets that must be managed forever, are hard to rotate, and are easy to leak. Scaling Workload Identity Federation to 120+ production projects shows why it changes how machine identity is approached entirely:
Collection Performance: Use Caution when using Range Expressions in Hot Paths when Collection Slicing
Range expressions make collection slicing concise, but they can introduce unexpected overhead in hot paths. This subscriber-only article compares several ways to create slices with `Memory`, `Span`, `ReadOnlyMemory`, and `ReadOnlySpan.
How Uno Platform uses .NET, MCP, and AI to build high quality apps
How Uno Platform built two Model Context Protocol servers in C# so AI agents can ground themselves in real documentation and then see and drive a running cross-platform .NET app. The post How Uno Platform uses .NET, MCP, and AI to build high quality
Microsoft annonce la mise à jour d'août de l'EDI Visual Studio, avec un meilleur contrôle de l'assistance IA et du travail entre les branches Git
Microsoft annonce la mise à jour d'août de Visual Studio EDI, avec un meilleur contrôle de l'assistance IA et du travail entre les branches Git Microsoft a annoncé la mise à jour du mois d'août pour Visual Studio 2026, offrant davantage de contrôle s
Boost Your .NET Projects with Spargine: Simplify Entity Framework Core with DbContextExtensions
DbContextExtensions, part of the DotNetTips.Spargine.Extensions project, offers reusable methods for common Entity Framework Core data-access patterns. It reduces repetitive code and enhances consistency by providing methods for adding, deleting, and
.NET Conf 2026 – Save the Date
.NET Conf returns November 10-12, 2026, with three days of sessions, community, and the launch of .NET 11. The post .NET Conf 2026 – Save the Date appeared first on .NET Blog.
From dotnet run to Foundry Hosted Agent in 3 lines of C#
You built an agent with Microsoft Agent Framework and it works great on your machine. Now what? Turns out deploying it to production takes 1 NuGet package, 3 lines of C#, and 2 commands. Let's do it. The post From dotnet run to Foundry Hosted Agent i
Explore new features available in C# 15 preview
C# 15 ships with .NET 11. It adds union types, closed hierarchies, a preview of the updated unsafe model, and a few smaller changes that remove everyday ceremony. The post Explore new features available in C# 15 preview appeared first on .NET Blog.
Collection Performance: Sort List Faster with CollectionsMarshal.AsSpan()
To sort a List efficiently, use CollectionsMarshal.AsSpan() to access its internal storage, then apply the Sort() function.
Rider Hands AI Agents The Keys To Its Refactoring Engine For Safer, Faster, And Cheaper Results
We traced a frontier model through fifteen C# refactoring tasks and counted what it reached for. It piped text into interactive commands 468 times. It called git 422 times and sed 392 times. It ran dotnet build 163 times. Across 2,513 tool calls it p
Rider 2026.2.1 and ReSharper 2026.2.1 Are Here!
Our first minor update for the 2026.2 release cycle is ready to download. Here’s what’s new. Rider Rider 2026.2 put AI-assisted development front and center, and v2026.2.1 keeps that momentum going: The refactoring-code skill, bundled in JetBrains Ri
Boost Your .NET Networking with Spargine: SocketExtensions That Röck
Spargine's SocketExtensions simplifies .NET socket programming by offering reusable extension methods that enhance control over networking tasks. It reduces boilerplate code related to port binding, buffer configuration, keep-alive settings, and time
General Performance: Object Initializers – Readability Versus Performance
The post discusses two methods for initializing objects in C#: traditional property assignment and object initializers. While the traditional method is slightly faster, object initializers enhance code readability. It recommends using object initiali
Scratch a simple data model, find a complex one
I seem to have a knack for discovering corner cases – or in many situations being a corner case. One category of this is where I find myself using a data model which appears simple to start with – and then the real world interferes. I’ve always found
Routing and Failover for Microsoft.Extensions.AI
Route requests across models and providers natively in Microsoft.Extensions.AI with RoutingChatClient, SemanticRoutingChatClient, and FailoverChatClient — new experimental primitives for content-based routing, failover, and custom routing policies. T
Instructions Hygiene – What Frontier Models Still Need You to Say
Get the most out of the latest models by providing the right level of instructions The post Instructions Hygiene – What Frontier Models Still Need You to Say appeared first on .NET Blog.
Boost Your .NET Projects with Spargine: Human-Friendly Encoding with Crockford Base32
Crockford Base32, created by Douglas Crockford, is a human-friendly encoding method designed to represent binary data clearly, minimizing character confusion. It excludes easily mistaken characters, offers case-insensitive decoding, and avoids paddin
.NET 11 Preview 7 is now available!
Find out about the new features in .NET 11 Preview 7 across libraries, runtime, SDK, C#, ASP.NET Core, .NET MAUI, Entity Framework Core, F#, and Windows Forms. The post .NET 11 Preview 7 is now available! appeared first on .NET Blog.
.NET and .NET Framework August 2026 servicing releases updates
A recap of the latest servicing updates for .NET and .NET Framework for August 2026. The post .NET and .NET Framework August 2026 servicing releases updates appeared first on .NET Blog.
JetBrains .NET Day Online 2026: Save the Date and Submit a Talk
A free, online event for the .NET community. JetBrains .NET Day Online 2026 takes place on Wednesday, October 7. Expect a day of practical talks, live demos, and real-world lessons from community speakers and the JetBrains .NET team. Two things are d
.NET Threads: The Performance Trap Hiding in Your Code
Creating background tasks in .NET applications is crucial to maintain responsiveness. While dedicated threads can be used, they incur significant overhead.
Test reporting in Microsoft.Testing.Platform: from red build to root cause
Microsoft.Testing.Platform brings failures into GitHub Actions and Azure DevOps, uses pipeline history to separate regressions from flakes, and preserves usable reports when a test host crashes. The post Test reporting in Microsoft.Testing.Platform:
The Ultimate .NET Workflow for Cursor, Antigravity, and AI-First Editors
With the rapid rise in agent-first development, many developers are adopting AI-first editors like Cursor, Google Antigravity IDE, Devin Desktop, and Kiro into their workflows. The appeal is obvious: deep, contextual AI assistance integrated directly
Beyond Chat: live Speech-to-Text with Foundry Local and C#
Build a live speech-to-text app in C# with Foundry Local, a compact Nemotron model, and local model lifecycle management. The post Beyond Chat: live Speech-to-Text with Foundry Local and C# appeared first on .NET Blog.
dotInsights | August 2026
Did you know? Ever wondered why C# uses the semicolon to terminate a statement? Obviously it comes from the C/C++ heritage it shares with other languages like Java, but where did C get it from? That would be Algol, where the semicolon was used to sep
Microsoft annonce la version 2.0 du SDK C# officiel du Model Context Protocol (MCP) pour serveurs et clients, un framework d'IA développé en collaboration avec Microsoft
Microsoft annonce la version 2.0 du SDK C# officiel du Model Context Protocol (MCP) pour serveurs et clients, un framework d'IA développé en collaboration avec Microsoft Le SDK C# du Model Context Protocol (MCP) est désormais disponible en version 2.
P/Invoke Showdown: [DllImport] vs. [LibraryImport] in Modern .NET
Is [LibraryImport] always faster than [DllImport]? Not necessarily. I benchmarked both across native Windows API calls, string marshalling, handles, out parameters, and allocation-heavy scenarios. The results may surprise you.
The Complete Package: Why Debugging Is Only Half the C# Productivity Story
As .NET developers, we need to iterate on our applications while building, and part of that developer inner loop is the debugging experience. The rise of multi-platform code editors further requires developers to have all the functionality they need
Microsoft présente la mise à jour de juillet de Visual Studio 2026, avec le nouvel agent IA, optimisé par le SDK GitHub Copilot, ainsi que de nouvelles compétences .NET et Azure intégrées
Microsoft présente la mise à jour de juillet de Visual Studio 2026, permettant de découvrir le nouvel agent IA, optimisé par le SDK GitHub Copilot, ainsi que de nouvelles compétences .NET et Azure intégrées Microsoft a annoncé la mise à jour de juill
JetBrains ReSharper 2026.2, l'extension Visual Studio destinée aux développeurs .NET, est disponible, apportant un écosystème d'IA ouvert pour les développeurs .NET et l'agent IA Junie en version preview
JetBrains ReSharper 2026.2, l'extension Visual Studio destinée aux développeurs .NET, est disponible, apportant un écosystème d'IA ouvert pour les développeurs .NET et l'agent IA Junie en version preview JetBrains est une société spécialisée dans le
UX Chronicles: Buffering the User Experience
The author critiques Buffer, a social media scheduling tool, after a transition from Twitter to Bluesky due to increased user friction. Key issues include inefficient scheduling interfaces, lack of character limit warnings during composition, and ina
La dernière version de l'EDI JetBrains pour le développement .NET Rider 2026.2 est disponible, avec l'intelligence de l'EDI pour les agents IA et des mises à jour pour le développement de jeux
La dernière version de l'EDI JetBrains pour le développement .NET Rider 2026.2 est disponible, avec l'intelligence de l'EDI pour les agents IA et des mises à jour pour le développement de jeux JetBrains est une société spécialisée dans le développeme
ReSharper C++ 2026.2: C++26 Reflection, ISPC Language Support, And More
ReSharper C++ 2026.2 is out, bringing initial support for C++26 reflection, the most anticipated addition to the C++ language in recent years. This release also introduces ACP agent support in ReSharper with Junie as the first available agent, adds s
Rider 2026.2: IDE Intelligence for AI Agents, Faster Performance, and Spectacular Game Dev Updates
Rider 2026.2 opens up the IDE’s own intelligence to your AI coding agents, so they work from real project knowledge instead of reconstructing it from files and terminal output. A new set of agent skills covers testing, profiling, refactoring, and off
ReSharper 2026.2: AI Agent Freedom in Visual Studio, .NET Debugging for VS Code, and More
ReSharper 2026.2 takes the first step toward ACP-based agent support in Visual Studio, starting with Junie in Preview. This is the beginning of an open AI ecosystem for .NET developers: your choice of agents and models, connected through a single pro
Rider 2026.2 Release Candidate Is Out!
The Rider 2026.2 Release Candidate is ready for you to try. This upcoming release opens the IDE’s own intelligence to your AI coding agents, brings GitHub Copilot in natively, and delivers a wave of performance gains across both .NET and game develop
ReSharper 2026.2 Release Candidate Released!
The ReSharper 2026.2 Release Candidate is ready for you to try. This release takes the first step toward ACP-based agent support in Visual Studio, starting with Junie in Preview, and sharpens everyday C# development with better analysis, refactoring,
Forking an open source project
Introduction and motivation Some of the projects I work on – notably V-Drum Explorer and At Your Service – use MIDI to interact with hardware devices. I use a couple of packages for this depending on the nature of the interaction, but the one I use m
Votre agent IA passe sans cesse à côté du véritable goulot d'étranglement : avec JetBrains Rider 2026.2 EAP, JetBrains présente une fonctionnalité de profilage basée sur dotTrace pour y remédier
Votre agent IA passe sans cesse à côté du véritable goulot d'étranglement : avec JetBrains Rider 2026.2 EAP, JetBrains présente une fonctionnalité de profilage basée sur dotTrace pour y remédier JetBrains est une société à responsabilité limitée inte
Presentation: Accelerating Netflix Data: A Cross-Team Journey from Offline to Online
Raj Ummadisetty and Ken Kurzweil share Netflix's architectural pivot to CloudStream, a repeatable capture, conversion, and deployment framework. They discuss shifting key-value abstractions from stateless to stateful to move terabytes of bulk data sa
How Open Source Enables Collaboration in Creating a Platform
A platform is a collaboration system: platform teams depend on application teams, and both need shared standards. Engineers trust a platform through its predictable behavior, not its features. Being an engineer is about problem-solving and being pas
OpenAI Fixes 18-Year-Old GNU libunwind Bug by Treating Crash Debugging Like Epidemiology
OpenAI found two unrelated bugs masquerading as one in ChatGPT's data infrastructure. Silent hardware corruption on one Azure host and an 18-year-old race condition in GNU libunwind's setcontext function with a one-instruction vulnerability window. T
Article: Beat-Aligned Mobile Audio Streaming with Virtual Chunks and Native Playback
In this article, I describe the challenges and the design of a React Native real-time mobile beat-aligned playback system for iOS and Android. The system combines personalization with low-latency, and seamless navigation and was the result of careful
AlloyDB Ships Proxy Models That Replace LLM Calls with Local Inference Inside the Database
Google shipped AlloyDB AI functions GA with a proxy model architecture that trains a lightweight local model from LLM outputs, then runs queries at database speed without external calls. Smart batching delivers 2,400x throughput improvement. The prox
AWS Details How One Customer Scaled to One Million Lambda Functions
AWS has outlined how ProGlove, an industrial-wearables manufacturer, was able to scale its SaaS platform to run more than one million AWS Lambda functions spread across thousands of dedicated customer accounts. By Matt Foster
The Kubernetes Approach to AI-Assisted Maintainership Prioritises Human Accountability
The Kubernetes community has introduced a framework for integrating AI into open-source maintainership, emphasising human accountability in code quality and oversight. AI tools may streamline workflows, but ultimate responsibility lies with human mai
Airbnb Shares Architecture Behind Sitar-Agent Dynamic Configuration Sidecar for Kubernetes Services
Airbnb engineers detailed Sitar-agent, a Kubernetes sidecar for dynamic configuration delivery across tens of thousands of pods, processing updates several times per minute. The system was redesigned with Java, Amazon S3 snapshot bootstrapping, and a
Presentation: The Multi-Agent Approach: Building Reliable and Controllable Software Development Automation
Itamar Friedman discusses how architects and engineering leaders can break through the AI productivity ceiling using adaptive multi-agent systems. He shares insights on moving past simple autocomplete to resilient workflows by integrating autonomous
Switching from PostgreSQL to ClickHouse for Improved Performance and Scalability
Momentic, the company behind an AI-driven software testing platform, recently rearchitected its caching system to handle over 2 million queries per day across 20 billion total entries, while maintaining an average response latency of around 250 ms. T
AWS Expands DevOps Agent with AI-Powered Release Management to Validate Code before Production
Amazon Web Services (AWS) has announced a major expansion of its AWS DevOps Agent, introducing new release management capabilities designed to assess code changes and autonomously test software before it reaches production. By Craig Risi
Presentation: Designing AI Platforms for Reliability: Tools for Certainty, Agents for Discovery
Aaron Erickson explains how NVIDIA designs and tests purpose-built AI agent hierarchies. For senior developers and architects, he outlines why balancing deterministic tools with agentic discovery is crucial. Discover how to leverage rare context, imp
How HubSpot Scaled Semantic Search to 20 Billion Vectors
SaaS software vendor HubSpot has described how its semantic search platform grew from a proof of concept into an internal service that now manages more than 20 billion vectors across 38-plus teams. The company says the system now supports agents, RAG
Node.js 26: Temporal API Enabled by Default, V8 14.6, and a Round of Deprecations
Node.js 26 has been released, featuring the Temporal API enabled by default, an updated V8 engine to version 14.6, and the Undici HTTP client upgraded to 8.0. The release also removes deprecated legacy APIs. Developers should note migration points re
Java News Roundup: Strict Field Initialization, GlassFish, GraalVM, JReleaser, RefactorFirst
This week's Java roundup for June 29th, 2026, features news highlighting: a new JEP candidate, Strict Field Initialization; point releases of GraalVM, JReleaser, RefactorFirst and Java Operator SDK; maintenance releases of GlassFish and Micronaut; th
Natvis Comes to Linux and macOS: Visualize Your C++ Types Without Writing a Single Data Formatter
If you’ve ever debugged your own C++ containers, strings, or hash tables on Linux or macOS, you know the deal: to see anything useful in the debugger, you have to write a custom data formatter. And writing a good data formatter is genuinely painful.
The .NET Host Process: What Runs Before Main() and Why It Sometimes Hangs
This guide explores the essential role of the .NET host process, which initializes the runtime, resolves dependencies, and launches applications. It highlights common issues with lingering host processes, especially during BenchmarkDotNet runs, and o
Coding Faster with dotNetTips.com Spargine 10: July 2026 Release
The announcement reveals the release of Spargine 10 (v2026.10.7.1) on July 1, 2026, introducing NuGet packages for .NET 10. This update enhances performance and reliability with new classes and methods, performance benchmarks, and optimizations. The
MCP Beyond the Chat Window: Build Diagnostics in CI
A practical tour of the Model Context Protocol tools for .NET build diagnostics - the full Binlog MCP toolset, how those tools run inside a GitHub Actions workflow, and what the evaluation data says about the efficiency gains. The post MCP Beyond the
.NET 8 and .NET 9 will reach End of Support on November 10, 2026
.NET 8 and .NET 9 will both reach end of support on November 10, 2026. Learn what this means and how to upgrade to .NET 10 (LTS). The post .NET 8 and .NET 9 will reach End of Support on November 10, 2026 appeared first on .NET Blog.
SkiaSharp 4.0 is here: announcing the first stable release
SkiaSharp 4.148.0 is the first stable release of SkiaSharp v4. Learn what is new, why you should be excited, and join the SkiaSharp live event on June 30. The post SkiaSharp 4.0 is here: announcing the first stable release appeared first on .NET Blog
Packaging and Package Identity for .NET apps with WinApp CLI on Windows
Use the WinApp CLI to add identity to and package .NET desktop applications, enabling deeper integration to Windows and easier distribution. The post Packaging and Package Identity for .NET apps with WinApp CLI on Windows appeared first on .NET Blog.
IO Performance: Reuse HttpClient to Avoid Connection Overhead
When populating collections in .NET, choosing the right bulk operation improves both clarity and efficiency. Methods like AddRange() and InsertRange() allow multiple items to be added in a single call, reducing overhead compared to repeated individua
dotNetDave Rocks .NET Day Switzerland 2026
dotNetDave will be speaking at SQL Saturday in Austin, Texas, on June 27, 2026, as part of the No Rest for the Wicked World Tour. His sessions, "Röck Yoür Cäreer" and "Unleash Your Inner Rockstar," focus on valuable career insights for tech professio
Your AI Agent Keeps Missing The Real Bottleneck. JetBrains Rider Can Fix It Now.
Here’s a case worth pondering: your app freezes for ten seconds, and you ask an AI agent what’s wrong. What does it actually do? For a long time the honest answer was: it rummages through your code and takes a wild guess. A snapshot taken by a profil
Database Performance: Making Entity Framework Queries Faster
The article discusses the advantages of using compiled queries in Entity Framework, especially for frequently executed and complex queries.
Personnalisez l'apparence de Microsoft Visual Studio à votre guise grâce à la nouvelle page d'options « Couleurs du thème », qui vous permet de personnaliser n'importe quel code couleur Fluent depuis l'EDI
Personnalisez l'apparence de Microsoft Visual Studio à votre guise grâce à la nouvelle page d'options « Couleurs du thème », qui vous permet de personnaliser n'importe quel code couleur Fluent directement depuis l'EDI Microsoft a introduit une nouvel
AI-Powered MSBuild Investigation with the Microsoft Binlog MCP Server
Diagnose MSBuild build failures and performance issues with AI using the new Microsoft Binlog MCP Server - 15 specialized tools that let your AI assistant investigate binary logs. The post AI-Powered MSBuild Investigation with the Microsoft Binlog MC
Your JetBrains IDE Expertise, Now on LinkedIn
Every developer has tools they rely on daily. The workflows they’ve built around them, the ways they’ve learned to move faster, debug smarter, and write better code – that kind of hands-on experience can be hard to put into words. We’re collaborating
Boost Your .NET Projects: Copilot, Benchmarks, and the Truth About Faster Code
The article discusses the limitations and benefits of using Copilot for code optimization in the Spargine .NET project. While some suggestions from Copilot significantly improved performance, others were ineffective or detrimental. The author emphasi
dotInsights | June 2026
Did you know? The var keyword isn’t a keyword! It’s one of several “contextual” keywords in C#, and it only has special meaning when used to declare a variable. Try defining a class called var and see what happens to the rest of your codebase… Welcom
Microsoft a publié l'ensemble d'utilitaires système PowerToys 0.100, avec un nouveau guide des raccourcis, des améliorations apportées à la palette de commandes et une mise à niveau vers .NET 10
Microsoft a publié l'ensemble d'utilitaires système PowerToys 0.100, avec un nouveau guide des raccourcis, des améliorations apportées à la palette de commandes et une mise à niveau vers .NET 10 Microsoft a publié la dernière version de son ensemble
Join us for .NET Day on Agentic Modernization Livestream
Announcing the .NET Day of Agentic Modernization Livestream The post Join us for .NET Day on Agentic Modernization Livestream appeared first on .NET Blog.
.NET 11 Preview 5 is now available!
Find out about the new features in .NET 11 Preview 5 across the .NET runtime, SDK, libraries, ASP.NET Core, .NET MAUI, C#, Entity Framework Core, and more! The post .NET 11 Preview 5 is now available! appeared first on .NET Blog.
.NET and .NET Framework June 2026 servicing releases updates
A recap of the latest servicing updates for .NET and .NET Framework for June 2026. The post .NET and .NET Framework June 2026 servicing releases updates appeared first on .NET Blog.
.NET at Microsoft Build 2026: Must watch sessions
Catch up on all the .NET sessions from Microsoft Build 2026 covering .NET 11, union types in C#, AI building blocks, the agentic web, .NET MAUI, and more! The post .NET at Microsoft Build 2026: Must watch sessions appeared first on .NET Blog.
Rider 2026.2 EAP 5: Code Quality Checks for Your AI Agents, and More.
Rider 2026.2 EAP 5 is now available, bringing a faster startup flow with the new non-modal Welcome screen and quality-check hooks for AI agents. If you’re catching up on the 2026.2 EAP cycle, be sure to check out the blog posts we’ve already publishe
Boost Your .NET Projects: Future-Proofing Performance with Spargine’s Fast Methods
The book "Rock Your Code: Code & App Performance for Microsoft .NET" emphasizes the evolving nature of .NET performance. Spargine's Fast methods are designed to optimize code efficiency while allowing developers to maintain consistency in method usag
Améliorer la sécurité de la mémoire en C#, Richard Lander
Améliorer la sécurité de la mémoire en C#, Richard Lander C# est un langage de programmation de haut niveau à usage général prenant en charge plusieurs paradigmes. C# englobe le typage statique, le typage fort, la portée lexicale, la programmation i
WPF Hot Reload Is Here: Edit Your XAML and Watch It Update Live in Rider
WPF Hot Reload is now available in Rider, starting with the 2026.2 EAP 2 build. You can edit your XAML while your app is running under the debugger and see the changes immediately, with no rebuild, no restart, and no losing your place in the applicat
dotNetDave Rocks SQL Saturday – Austin 2026
dotNetDave will be speaking at SQL Saturday in Austin, Texas, on June 27, 2026, as part of the No Rest for the Wicked World Tour. His sessions, "Röck Yoür Cäreer" and "Unleash Your Inner Rockstar," focus on valuable career insights for tech professio
Rock Your Career: Surviving The Technical Interview – 7th Edition
David McCarter has released the 7th edition of "Rock Your Career: Surviving The Technical Interview," providing essential strategies for software engineers facing modern hiring challenges. This updated guide covers interview preparation, resume craft
GitHub Copilot Agent for Unit Tests: My Real-World Spargine Experiment
After experimenting with the GitHub Copilot Agent during the 2026 Microsoft MVP Summit, the author faced numerous challenges, including code deletion, slow performance, and inconsistent adherence to coding conventions. Despite these issues, the agent
Deprecating dotMemory Unit
dotMemory Unit has long served as a unit testing framework for detecting memory issues in .NET code. We are grateful to everyone who has used it as part of their development and testing workflows. After careful consideration, we have decided to retir
Microsoft présente la mise à jour de mai de Visual Studio 2026, avec un nouvel agent de planification, une interface de comparaison des différences multi-fichiers et une nouvelle version de MSVC Build Tools
Microsoft présente la mise à jour de mai de Visual Studio 2026, avec un nouvel agent de planification, une interface de comparaison des différences multi-fichiers et une nouvelle version de MSVC Build Tools Microsoft a publié la mise à jour de mai 20
Doing More with GitHub Copilot as a .NET Developer
Want to get more out of your GitHub Copilot experience? Here are some easy ways to get started. The post Doing More with GitHub Copilot as a .NET Developer appeared first on .NET Blog.
What Happens When You Give AI Agents the Map of Your Code’s Coverage?
When you ask an AI agent to write a new feature, a good agent will eventually say: “I need to write a test for this.” But what happens next is usually messy. To figure out where that new test belongs, the agent has to start searching through your pro
Rider 2026.2 EAP 3: Cost-effective Agentic Test Coverage, Code Change Previews, GameDev Templates, and NuGet Improvements
JetBrains Rider 2026.2 EAP 3 is out! You can download this version from our website, update directly from within the IDE, use the free Toolbox App, or install it via snap packages. Here’s what you can expect from this update: New AI agent skill to re
dotInsights | May 2026
Did you know? C# supports ref return and ref local, which let you return and work with references to variables instead of copies of their values. Welcome to dotInsights by JetBrains! This newsletter is the home for recent .NET and software developme
The ReSharper 2026.2 Early Access Program Begins: Bringing More AI Agents into Visual Studio
We’re excited to announce that the Early Access Program (EAP) for ReSharper and .NET Tools 2026.2 is now underway! While our EAP announcements usually cover a wide range of new features, performance updates, and bug fixes, this release is different.
Rider 2026.2 Early Access Program Begins With Performance Improvements
The Early Access Program (EAP) for Rider 2026.2 is now open, and the first preview build for the upcoming major release is already out. There are several ways for you to get your hands on the first preview build: A reminder of what the EAP is all ab
Découvrez les types union dans C# 15, par Bill Wagner
Découvrez les types union dans C# 15, par Bill Wagner Les types union étaient très attendus dans C#, et ils sont enfin là. À partir de .NET 11 Preview 2, C# 15 introduit le mot-clé union. Le mot-clé union permet de déclarer qu'une valeur appartient
ASP.NET Core: Why I Couldn’t Upgrade FluentValidation Past 11.4 in My Calzolari.Grpc.AspNetCore.Validation Package (and How I Finally Fixed It)
Context I’m the author of the Calzolari.Grpc.AspNetCore.Validation package, which provides request message validation for gRPC...
Microsoft annonce la version 1.0 de Microsoft Agent Framework pour .NET et Python, offrant une orchestration multi-agents de niveau entreprise et la prise en charge de modèles d'IA multi-fournisseurs
Microsoft annonce la version 1.0 de Microsoft Agent Framework pour .NET et Python, offrant une orchestration multi-agents de niveau entreprise et la prise en charge de modèles d'IA multi-fournisseurs L'équipe de Microsoft a annoncé que Microsoft Agen
.NET 10: System.Text.Json Improvements
Introduction System.Text.Json continues to evolve in .NET 10 with meaningful improvements focused on correctness and...
.NET 10: Zip and GZip API Improvements
Introduction Compression APIs like ZipArchive and GZipStream have been part of .NET for years. They’ve...
.NET 10: Post-Quantum Cryptography Comes to .NET
Introduction Quantum computing is no longer just a research topic. As the technology matures, the...
Election 2029: Load Testing
I’ve now been through three approaches to load testing for the site, and I think I’ve settled on a solution for the medium term at least. This post explains what I’m trying to achieve, along with the pros and cons of what I’ve tried. Requirements For
Election 2029: Models and Reality
On January 15th 2026, Robert Jenrick broke my election site. Okay, that’s slightly hyperbolic. The site continued to operate, and it would be fairer to say that the actions of Kemi Badenoch and Robert Jenrick exposed a flaw in the data modelling in m
IA générative avec des grands modèles de langage en C# en 2026 : une base pour les développeurs .NET/C# travaillant avec Microsoft Foundry, GitHub Models et AI Extensions, par Jeremy Likness
IA générative avec des grands modèles de langage en C# en 2026 : une base pour les développeurs .NET/C# travaillant avec Microsoft Foundry, GitHub Models et AI Extensions, par Jeremy Likness L'IA générative est devenue la technologie grand public à l
.NET 10: Streaming over WebSockets with the New WebSocket Stream API
Introduction .NET 10 introduces a new WebSocket stream API that makes working with WebSockets feel...
.NET 10: Automatic support of TLS 1.3 on MacOS
Introduction With .NET 10, macOS developers get a nice upgrade for free: TLS 1.3 is...
ASP.NET Core 10: First-class Server-Sent Events with an Angular client
Introduction For years, if you wanted to push data from the server to the client...
Changing Immutable Collections
As I’ve written before, I’m leaning heavily into immutability in the election site code. Until September 2025 (it’s taken a long time to get round to writing this blog post) that meant a combination of records, ImmutableList<T> and ImmutableDictionar
ASP.NET Core 10: New OpenTelemetry metrics for Identity
Introduction ASP.NET Core has been shipping built-in OpenTelemetry meters for hosting, Kestrel, routing, and rate...
ASP.NET Core 10: Clearer separation between middlewares and endpoints for more predictable routing
Introduction If you’ve been working with ASP.NET Core long enough, you’ve probably been bitten at...
ASP.NET Core 10: Easy support of local multi host
Introduction If you’ve ever built a project locally that needed to respond on multiple hostnames,...
C# 14: User-Defined Compound Assignment Operators
Introduction C# 14 brings an interesting upgrade to operator overloading: custom types can now define...
C# 14: Introducing partial constructors and partial events
Introduction C# 14 introduces a subtle but genuinely useful improvement for developers working with large...
C# 14: Introducing field-backed auto‐properties via the contextual keyword field
Introduction If you’ve ever used auto-implemented properties in C# but then needed to add logic...
C# 14: Modifiers on simple lambda parameters without explicit parameter types
Introduction C# keeps evolving, and each version brings small improvements that make everyday code a...
C# 14: More Implicit Conversions for Span<T> and ReadOnlySpan<T>
Introduction Span<T> and ReadOnlySpan<T> have become core building blocks for high-performance .NET code.They’re fast, allocation-free,...
C# 14: Introducing Null-Conditional Assignment
Introduction Every new C# release brings its share of improvements to how we write safer...
Microsoft annonce que le langage de programmation F# 10 est disponible avec .NET 10 et Visual Studio 2026, apportant des améliorations axées sur la clarté, la cohérence et les performances
Microsoft annonce que le langage de programmation F# 10 est disponible avec .NET 10 et Visual Studio 2026, apportant des améliorations axées sur la clarté, la cohérence et les performances F# 10 est désormais disponible avec .NET 10 et Visual Studio
Microsoft présente les nouvelles fonctionnalités de C# 14 qui devraient permettre aux développeurs C# de bénéficier de certaines des améliorations de performances offertes par .NET 10
Microsoft présente les nouvelles fonctionnalités de C# 14 qui devraient permettre aux développeurs C# de bénéficier de certaines des améliorations de performances offertes par .NET 10. Voici un aperçu rapide de ce que Microsoft a apporté dans C# 14 :
C# 14: Introducing Extension Members
Introduction C# continues to evolve with every major release, and C# 14 is no exception.This...
C# 14: Introducing Interceptors
Introduction C# 14 ships with a feature that sounds almost too good to be true:...
C# 14: Interceptors in practice with automatic correlation headers
Introduction Interceptors became a stable C# language feature with C# 14 and .NET 10, after spending...
Microsoft présente le premier aperçu de la toute nouvelle expérience utilisateur dans Visual Studio 2026, avec une conception axée sur le code, une interface des paramètres repensée et bien plus encore
Microsoft présente le premier aperçu de la toute nouvelle expérience utilisateur dans Visual Studio 2026, avec une conception axée sur le code, une interface des paramètres repensée et bien plus encore Microsoft a dévoilé un premier aperçu de l'expér
Microsoft annonce la dernière version de son framework logiciel .NET 10, apportant des améliorations au compilateur JIT, des améliorations NativeAOT, ainsi que l'optimisation du runtime
Microsoft annonce la dernière version de son framework logiciel .NET 10, apportant des améliorations au compilateur JIT, des améliorations NativeAOT, ainsi que l'optimisation du runtime La version la plus récente de .NET est .NET 10, publiée récemme
Microsot annonce que Visual Studio 2026 est disponible : l'EDI apporte des améliorations en termes de performances, une expérience utilisateur repensée et une avancée dans le développement basé sur l'IA
Microsot annonce que Visual Studio 2026 est disponible : l'EDI apporte des améliorations en termes de performances, une expérience utilisateur repensée et une avancée dans le développement basé sur l'IA Microsot a annoncé que Visual Studio 2026 est d
Microsoft annonce la mise à jour d'octobre 2025 pour Visual Studio 2022 v17.14, avec des améliorations au niveau des choix de modèles, des flux agentics et de la gestion des fils de discussion
Microsoft annonce la mise à jour d'octobre 2025 pour Visual Studio 2022 v17.14, avec des améliorations au niveau des choix de modèles, des flux agentics et de la gestion des fils de discussion Microsoft a annoncé la mise à jour d'Octobre de Visual St
Laissez l'agent de codage Copilot se charger des tâches fastidieuses : analyser votre référentiel, planifier des tâches en plusieurs étapes, créer des tickets et des pull requests, par Bruno Capuano
Laissez l'agent de codage Copilot se charger des tâches fastidieuses : analyser votre référentiel, planifier des tâches en plusieurs étapes, créer des tickets et des pull requests, par Bruno Capuano. GitHub Copilot est un assistant IA de programmatio
Présentation de Microsoft Agent Framework (Preview) : simplifier les agents IA pour tous les développeurs, par Luis Quintanilla
Présentation de Microsoft Agent Framework (Preview) : simplifier les agents IA pour tous les développeurs, par Luis Quintanilla La création d'agents IA ne devrait pas être sorcière. Pourtant, de nombreux développeurs se retrouvent confrontés à une lo
Interesting new C# 14 features coming with .NET 10
With the release of .NET 10 just around the corner (next month!), it’s time to take a look at the new features we can expect for C# 14. Note: the goal of this post is not to be an exhaustive list of all new features. I will only cover the ones that s
Microsoft annonce la mise à jour de septembre 2025 pour Visual Studio 2022 v17.14, avec un agent de profilage, un agent de modernisation des applications .NET, et des améliorations du mode Agent Copilot
Microsoft annonce la mise à jour de septembre 2025 pour Visual Studio 2022 v17.14, avec un agent de profilage, un agent de modernisation des applications .NET, et des améliorations du mode Agent Copilot Microsoft a annoncé la mise à jour de septembre
5 instructions générative de Copilot Chat que les développeurs .NET devraient adopter dès aujourd'hui, par Wendy Breiding
5 instructions générative de Copilot Chat que les développeurs .NET devraient adopter dès aujourd'hui, par Wendy Breiding L'intelligence artificielle est en train de devenir un élément clé de la boîte à outils du développeur .NET moderne. Avec GitHub
GPT-5 pour les développeurs Microsoft : GitHub Copilot, AI Toolkit dans Visual Studio Code, Azure AI Foundry, GitHub Models, Microsoft Copilot Studio, Microsoft 365 Copilot, OpenAI .NET SDK
GPT-5 pour les développeurs Microsoft : GitHub Copilot, AI Toolkit dans Visual Studio Code, Azure AI Foundry, GitHub Models, Microsoft Copilot Studio, Microsoft 365 Copilot, OpenAI .NET SDK En collaboration avec OpenAI, Microsoft a récemment dép
Records and the ‘with’ operator, redux
In my previous blog post I described some behaviour of C# record types which was unexpected to me, though entirely correct according to the documentation. This is a follow-up post to that one, so if you haven’t read that one yet, please do so – I won
Unexpected inconsistency in records
Unexpected inconsistency in records The other day, I was trying to figure out a bug in my code, and it turned out to be a misunderstanding on my part as to how C# records work. It’s entirely possible that I’m the only one who expected them to work in
ReSharper, l'extension Visual Studio de JetBrains pour les développeurs .NET, est disponible dans Microsoft Visual Studio Code : la preview publique est maintenant ouverte
ReSharper, l'extension Visual Studio de JetBrains pour les développeurs .NET, est disponible dans Microsoft Visual Studio Code : la preview publique est maintenant ouverte Au cours des 20 dernières années, ReSharper s'est affirmé comme l'outil de pr
Exploration des membres d'extension en C# 14 : préservation de l'énorme quantité de méthodes d'extension paramètre "This" existantes tout en introduisant de nouveaux types
Exploration des membres d'extension en C# 14 : la nouvelle syntaxe des membres d'extension préserve l'énorme quantité de méthodes d'extension paramètre This existantes tout en introduisant de nouveaux types. C# 14 introduit les membres d'extension. C
Election 2029: Postcodes
Postcodes After a pretty practical previous post about records and collections, this post is less likely to give anyone ideas about how they might tackle a problem in their own project, and doesn’t have any feature requests for Microsoft either. It’s
Records and Collections
Records and Collections This post is to some extent a grab-bag of points of friction I’ve encountered when using records and collections within the election site. Records recap This may end up being the most generally useful blog post in this series.
Election 2029: Storage
Storage Since my last post about the data models, I’ve simplified things very slightly – basically the improvements that I thought about while writing the post have now been implemented. I won’t go into the details of the changes, as they’re not real
Election 2029: Data Models
Data models (and view-models) and how they’re used I was considering using the term “architecture” somewhere in the title of this post, but it feels too pompous for the scale of site. I could probably justify it, but it would give me the ick every ti
Election 2029: Technical overview
Technical overview This post is mostly for scene-setting purposes. There’s nothing particularly remarkable here, but it’s useful to get the plain facts out of the way before we get into genuinely interesting design aspects. Just as a reminder, go to
C# 13: Introducing the new escape sequence
Introduction C# 13 quietly introduced a new escape sequence that’ll make terminal and low-level devs...
Running a GitHub Actions workflow that doesn't exist yet on the default branch
Writing this mostly for future me in case I need it again. Hopefully it can help someone else too! Sometimes you need to run a GitHub Actions workflow, but it’s not on the default branch yet, because it’s still a work in progress and hasn’t been merg
Building a URL shortener in 12 lines of code using Cloudflare Workers
Cloudflare Workers Cloudflare Workers is a serverless environment that runs Javascript. Basically, you just write code that handle HTTP requests, similarly to Node.js. The code is deployed globally across the Cloudflare network, which means it’s alwa
Using multiple JSON serialization settings in ASP.NET Core
My blog has been a bit quiet in the last 18 months or so, because, well, life happened… In that time span I became a father, changed jobs twice, and relocated to Canada with my family, so free time has been scarce. Anyway, I recently ran into a probl
Building a project that target .NET Framework 4.5 in Visual Studio 2022
I maintain a few libraries that still target .NET Framework 4.5 (among others). .NET 4.5 has long been out of support, but I try to keep supporting older frameworks in my libraries as long as it’s not a major inconvenience, because many people mainta
A quick review of C# 10 new language features
.NET 6.0 and C# 10 are just around the corner, so now is a good time to review some of the most interesting new language features! Record structs 📄 Proposal Records were introduced in C# 9 as a simple way to define data types with value equality sem
C# 9 records as strongly-typed ids - Part 5: final bits and conclusion
We’re reaching the end of this series on records as strongly-typed ids. Sorry for the long delay since the last post… life happened! So far we’ve covered ASP.NET Core model binding, JSON serialization, and EF Core integration. Almost everything is wo
C# 9 records as strongly-typed ids - Part 4: Entity Framework Core integration
So far in this series, I showed how to use C# 9 records to declare strongly-typed ids as easily as this: public record ProductId(int Value) : StronglyTypedId<int>(Value); I also explained how to make them work correctly with ASP.NET Core model bindin
C# 9 records as strongly-typed ids - Part 3: JSON serialization
In the previous post in this series, we noticed that the strongly-typed id was serialized to JSON in an unexpected way: { "id": { "value": 1 }, "name": "Apple", "unitPrice": 0.8 } When you think about it, it’s not really unexpected: the strongly-type
C# 9 records as strongly-typed ids - Part 2: ASP.NET Core route and query parameters
Last time, I explained how easy it is to use C# 9 record types as strongly-typed ids: public record ProductId(int Value); But unfortunately, we’re not quite done yet: there are a few issues to fix before our strongly-typed ids are really usable. For
Using C# 9 records as strongly-typed ids
Strongly-typed ids Entities typically have integer, GUID or string ids, because those types are supported directly by databases. However, if all your entities have ids of the same type, it becomes pretty easy to mix them up, and use the id of a Produ
Automatic factory with Microsoft.Extensions.DependencyInjection and Castle DynamicProxy
Dependency injection: the good and the bad Dependency injection (DI) is a great pattern, which can really help make your code cleaner, more decoupled and more testable. There are many DI libraries, like Autofac, Lamar (StructureMap’s successor), Cast
Introducing Cosmos DB Studio
I’ve been using Azure Cosmos DB on a fairly regular basis for the last 2 years or so. It’s a pretty good database, but one thing has always bothered me: the lack of a proper tool to query and modify data in the database. Basically, here are the curre
Inject a service into a System.Text.Json converter
Most JSON converters are fairly simple, and typically self-contained. But once in a while, you need to do something a little more complex in a converter, and you end up needing to call a service. However, there’s no built-in dependency injection in S
ASP.NET Core 3, IIS and empty HTTP headers
HTTP headers are key/value pairs sent at the beginning of a request or response. According to the grammar in RFC 7230, a field could have an empty value. In practice, it probably doesn’t make much sense: semantically, a header with an empty value or
Exposing a custom type as a JSON string in an ASP.NET Core API
Sometimes your API needs to expose a non-primitive type that has a “natural” string representation. For instance, a standard representation for a duration is the ISO 8601 format, where “1 month, 2 days, 3 hours and 4 minutes” can be represented as P1
Git tip: how to fix an accidental commit on the wrong branch
Oh no, you just accidentally commited to master, when you were supposed to work on a feature branch! How to fix it? It’s actually pretty easy with Git! A common Git workflow nowadays is the “feature branch” workflow: you can’t push directly to the “m
Exciting new features in C# 9
Last week at Microsoft Build, there have been a lot of exciting annoucements! .NET 5, Blazor WebAssembly, .NET MAUI, WinUI… But the thing I’m most eager to get my hands on is C# 9, which introduces many interesting new features, so let’s take a quick
Things every C# developer should know #1: hash codes
As a C# developer, there are obviously a lot of skills you need to master to be effective: language syntax, framework classes, third-party libraries, databases, regular expressions, the HTTP protocol, etc. But there are a handful of things that I con
Moving my blog to Hugo
If you’re a regular reader of my blog, you probably noticed that the design has changed. In fact, it’s not just the design, it’s just about everything! My blog used to be hosted on WordPress. It did the job, but honestly, I didn’t really like WordPre
About
I’m Thomas Levesque, a French software developer from Paris. I’ve been programming in C# almost since the beginning, and I still love it. I’ve done a lot of desktop app development with WinForms and WPF, but nowadays my focus is mostly on ASP.NET Cor
Using the OAuth 2.0 device flow to authenticate users in desktop apps
Over the last few years, OpenID Connect has become one of the most common ways to authenticate users in a web application. But if you want to use it in a desktop application, it can be a little awkward… Authorization code flow OpenID Connect is an au
Lazily resolving services to fix circular dependencies in .NET Core
The problem with circular dependencies When building an application, good design dictates that you should avoid circular dependencies between your services. A circular dependency is when some components depend on each other, directly or indirectly, e
Handling query string parameters with no value in ASP.NET Core
Query strings are typically made of a sequence of key-value pairs, like ?foo=hello&bar=world…. However, if you look at RFC 3986, you can see that query strings are very loosely specified. It mentions that query components are often used to carry iden
ASP.NET Core: when environments are not enough, use sub-environments!
Out of the box, ASP.NET Core has the concept of “environments”, which allows your app to use different settings based on which environment it’s running in. For instance, you can have Development/Staging/Production environments, each with its own sett
Easy unit testing of null argument validation (C# 8 edition)
A few years ago, I blogged about a way to automate unit testing of null argument validation. Its usage looked like this: [Fact] public void FullOuterJoin_Throws_If_Argument_Is_Null() { var left = Enumerable.Empty<int>(); var right = Enumerable.Empty<
Using foreach with index in C#
Just a quick tip today! for and foreach loops are among the most useful constructs in a C# developer’s toolbox. To iterate a collection, foreach is, in my opinion, more convenient than for in most cases. It works with all collection types, including
Handling type hierarchies in Cosmos DB (part 2)
This is the second post in a series of 2: Handling type hierarchies in Cosmos DB (part 1) Handling type hierarchies in Cosmos DB (part 2) (this post) In the previous post, I talked about the difficulty of handling type hierarchies in Cosmos DB, showe
Handling type hierarchies in Cosmos DB (part 1)
This is the first post in a series of 2: Handling type hierarchies in Cosmos DB (part 1) (this post) Handling type hierarchies in Cosmos DB (part 2) Azure Cosmos DB is Microsoft’s NoSQL cloud database. In Cosmos DB, you store JSON documents in contai
Using TypeScript to write Cosmos DB stored procedures with async/await
Disclaimer: I am by no mean a TypeScript expert. In fact, I know very little about JS, npm, gulp, etc. So it’s entirely possible I said something really stupid in this article, or maybe I missed a much simpler way of doing things. Don’t hesitate to l
Scaling out ASP.NET Core SignalR using Azure Service Bus
ASP.NET Core SignalR is a super easy way to establish two-way communication between an ASP.NET Core app and its clients, using WebSockets, Server-Sent Events, or long polling, depending on the client’s capabilities. For instance, it can be used to se
Google+ shutdown: fixing Google authentication in ASP.NET Core
A few months ago, Google decided to shutdown Google+, due to multiple data leaks. More recently, they announced that the Google+ APIs will be shutdown on March 7, 2019, which is pretty soon! In fact, calls to these APIs might start to fail as soon as
Multitenant Azure AD issuer validation in ASP.NET Core
Update 2021/09/19: If you’re using the newer Microsoft.Identity.Web library, you don’t have anything to do to handle this, as it’s already handled by the library. This article only applies if you’re using the generic OpenID Connect provider. Thanks t
Making a WPF app using a SDK-style project with MSBuildSdkExtras
Ever since the first stable release of the .NET Core SDK, we’ve enjoyed a better C# project format, often called “SDK-style” because you specify a SDK to use in the project file. It’s still a .csproj XML file, it’s still based on MSBuild, but it’s mu
Asynchronous initialization in ASP.NET Core, revisited
Initialization in ASP.NET Core is a bit awkward. There are well defined places for registering services (the Startup.ConfigureServices method) and for building the middleware pipeline (the Startup.Configure method), but not for performing other initi
Handling multipart requests with JSON and file uploads in ASP.NET Core
Suppose we’re writing an API for a blog. Our “create post” endpoint should receive the title, body, tags and an image to display at the top of the post. This raises a question: how do we send the image? There are at least 3 options: Embed the image b
Asynchronous initialization in ASP.NET Core with custom middleware
Update: I no longer recommend the approach described in this post. I propose a better solution here: Asynchronous initialization in ASP.NET Core, revisited. Sometimes you need to perform some initialization steps when your web application starts. How
Hosting an ASP.NET Core 2 application on a Raspberry Pi
As you probably know, .NET Core runs on many platforms: Windows, macOS, and many UNIX/Linux variants, whether on x86/x64 architectures or on ARM. This enables a wide range of interesting scenarios… For instance, is a very small machine like a Raspber
Writing a GitHub Webhook as an Azure Function
I recently experimented with Azure Functions and GitHub apps, and I wanted to share what I learned. A bit of background As you may already know, I’m one of the maintainers of the FakeItEasy mocking library. As is common in open-source projects, we us
Understanding the ASP.NET Core middleware pipeline
Middlewhat? The ASP.NET Core architecture features a system of middleware, which are pieces of code that handle requests and responses. Middleware are chained to each other to form a pipeline. Incoming requests are passed through the pipeline, where
Cleanup Git history to remove unwanted files
I recently had to work with a Git repository whose modifications needed to be ported to another repo. Unfortunately, the repo had been created without a .gitignore file, so a lot of useless files (bin/obj/packages directories…) had been commited. Thi
Better timeout handling with HttpClient
The problem If you often use HttpClient to call REST APIs or to transfer files, you may have been annoyed by the way this class handles request timeout. There are two major issues with timeout handling in HttpClient: The timeout is defined at the Htt
Transform T4 templates as part of the build, and pass variables from the project
T4 (Text Template Transformation Toolkit) is a great tool to generate code at design time; you can, for instance, create POCO classes from database tables, generate repetitive code, etc. In Visual Studio, T4 files (.tt extension) are associated with
Common MSBuild properties and items with Directory.Build.props
To be honest, I never really liked MSBuild until recently. The project files generated by Visual Studio were a mess, most of their content was redundant, you had to unload the projects to edit them, it was poorly documented… But with the advent of .N
Testing and debugging library code from LINQPad
I’ve been meaning to blog about LINQPad in a very long time. In case you don’t know about it, LINQPad is a tool that lets you write and test code very quickly without having to create a full-blown project in Visual Studio. It supports C#, VB.NET, F#
Linq performance improvements in .NET Core
By now, you’re probably aware that Microsoft released an open-source and cross-platform version of the .NET platform: .NET Core. This means you can now build and run .NET apps on Linux or macOS. This is pretty cool in itself, but it doesn’t end there
Easy text parsing in C# with Sprache
A few days ago, I discovered a little gem: Sprache. The name means “language” in German. It’s a very elegant and easy to use library to create text parsers, using parser combinators, which are a very common technique in functional programming. The th
What's new in FakeItEasy 3.0.0?
FakeItEasy is a popular mocking framework for .NET, with an very intuitive and easy-to-use API. For about one year, I’ve been a maintainer of FakeItEasy, along with Adam Ralph and Blair Conrad. It’s been a real pleasure working with them and I had a
C# methods in git diff hunk headers
If you use git on the command line, you may have noticed that diff hunks often show the method signature in the hunk header (the line that starts with @@), like this: diff --git a/Program.cs b/Program.cs index 655a213..5ae1016 100644 --- a/Program.cs
Fun with the HttpClient pipeline
A few years ago, Microsoft introduced the HttpClient class as a modern alternative to HttpWebRequest to make web requests from .NET apps. Not only is this new API much easier to use, cleaner, and asynchronous by design, it’s also easily extensible. Y
Tuple deconstruction in C# 7
Last time on this blog I talked about the new tuple feature of C# 7. In Visual Studio 15 Preview 3, the feature wasn’t quite finished; it lacked 2 important aspects: emitting metadata for the names of tuple elements, so that the names are preserved a
Tuples in C# 7
A tuple is an finite ordered list of values, of possibly different types, which is used to bundle related values together without having to create a specific type to hold them. In .NET 4.0, a set of Tuple classes has been introduced in the framework,
Pitfall: using var and async together
A few days ago at work, I stumbled upon a sneaky bug in our main app. The code looked innocent enough, and at first glance I couldn’t understand what was wrong… The code was similar to the following: public async Task<bool> BookExistsAsync(int id) {
Publishing a package from AppVeyor to NuGet.org
In the last few months, I’ve been using AppVeyor CI on some of my open-source projects (along with Cake for the build scripts). I really like it, but one thing bothered me: I couldn’t find a way to manually publish packages to NuGet.org directly from
Test driving C# 7 features in Visual Studio “15” Preview
About two weeks ago, Microsoft released the first preview of the next version of Visual Studio. You can read about what’s new in the release notes. Some of the new features are really nice (for instance I love the new “lightweight installer”), but th
Automatically inject fakes in test fixture with FakeItEasy
Today I’d like to share a nice feature I discovered recently in FakeItEasy. When you write unit tests for a class that takes dependencies, you typically need to create fake/mock dependencies and manually inject them into the SUT (System Under Test),
Using multiple cancellation sources with CreateLinkedTokenSource
Async programming in C# used to be hard; thanks to .NET 4’s Task Parallel Library and C# 5’s async/await feature, it has become fairly easy, and as a result, is becoming much more common. At the same time, a standardized approach to cancellation has
Explicitly switch to the UI thread in an async method
Async code is a great way to keep your app’s UI responsive. You can start an async operation from the UI thread, await it without blocking the UI thread, and naturally resume on the UI thread when it’s done. This is a very powerful feature, and most
[WPF] Prevent the user from pasting an image in a RichTextBox
WPF’s RichTextBox control is quite powerful, and very handy if you need to accept rich text input. However, one of its features can become an issue: the user can paste an image. Depending on what you intend to do with the text entered by the user, yo
Weak events in C#, take two
A few years ago, I blogged about a generic implementation of the weak event pattern in C#. The goal was to mitigate the memory leaks associated with events when you forget to unsubscribe. The implementation was based on the use of weak references to
C# Puzzle 2
Just another little puzzle based on an issue I had at work… Consider this piece of code : Console.WriteLine($"x > y is {x > y}"); Console.WriteLine($"!(x <= y) is {!(x <= y)}"); How would you declare and initialize x and y for the program to produce
How to retrieve dates as UTC in SQLite
SQLite is a nice in-process database engine: it’s very lightweight, doesn’t require any server or configuration, and runs on all platforms. There is even an official ADO.NET provider that’s very well made. However, if you store dates as UTC with this
Exception filters in C# 6: their biggest advantage is not what you think
Exception filters are one of the major new features of C# 6. They take advantage of a CLR feature that was there from the start, but wasn’t used in C# until now. They allow you to specify a condition on a catch block: static void Main() { try { Foo.D
Create an auto-mocking container with Unity and FakeItEasy
Unit testing can be tedious sometimes, especially when testing classes that have complex dependencies. Fortunately, some tools make it somewhat easier. I’ve been using FakeItEasy a lot recently; it’s a very easy to use mocking framework for .NET. It
Async and cancellation support for wait handles
The .NET framework comes with a number of low-level synchronization primitives. The most commonly used are collectively known as “wait handles”, and inherit the WaitHandle class: Semaphore, Mutex, AutoResetEvent and ManualResetEvent. These classes ha
Leveraging ReSharper annotations
I don’t think it’s really necessary to present ReSharper (often abbreviated R#), but in case you don’t know about it, it’s a tool made by JetBrains that performs real-time analysis of your C# or VB.NET code to warn you about possible bugs, bad practi
C# Puzzle 1
I love to solve C# puzzles; I think it’s a great way to gain a deep understanding of the language. And besides, it’s fun! I just came up with this one: static void Test(out int x, out int y) { x = 42; y = 123; Console.WriteLine (x == y); } What do yo
Customizing string interpolation in C# 6
One of the major new features in C# 6 is string interpolation, which allows you to write things like this: string text = $"{p.Name} was born on {p.DateOfBirth:D}"; A lesser known aspect of this feature is that an interpolated string can be treated ei
Async unit tests with NUnit
Recently, my team and I started writing unit tests on an application that uses a lot of async code. We used NUnit (2.6) because we were already familiar with it, but we had never tried it on async code yet. Let’s assume the system under test is this
A new library to display animated GIFs in XAML apps
A few years ago, I wrote an article that showed how to display an animated GIF in WPF. The article included the full code, and was quite successful, since WPF had no built-in support for animated GIFs. Based on the issues reported in the comments, I
Optimize ToArray and ToList by providing the number of elements
The ToArray and ToList extension methods are convenient ways to eagerly materialize an enumerable sequence (e.g. a Linq query) into an array or a list. However, there’s something that bothers me: both of these methods are very inefficient if they don
Easily convert file sizes to human-readable form
If you write an application that has anything to do with file management, you will probably need to display the size of the files. But if a file has a size of 123456789 bytes, it doesn’t mean that you should just display this value to the user, becau
StringTemplate: another approach to string interpolation
With the upcoming version 6 of C#, there’s a lot of talk on CodePlex and elsewhere about string interpolation. Not very surprising, since it’s one of the major features of that release… In case you were living under a rock during the last few months
Passing parameters by reference to an asynchronous method
Asynchrony in C# 5 is awesome, and I’ve been using it a lot since it was introduced. But there are few annoying limitations; for instance, you cannot pass parameters by reference (ref or out) to an asynchronous method. There are good reasons for that
Easy unit testing of null argument validation
When unit testing a method, one of the things to test is argument validation : for instance, ensure that the method throws a ArgumentNullException when a null argument is passed for a parameter that isn’t allowed to be null. Writing this kind of test
Visual Studio Online + Git integration with Team Explorer
I recently started using Visual Studio Online for personal projects, and I must say it’s a pretty good platform, although it would be nice to be able to host public projects as well as private ones. The thing I like the most is the integration with V
A review of NDepend
I’ve been hearing quite a lot about NDepend over the last few years, but I had never tried it until recently, when its creator Patrick Smacchia was kind enough to offer me a license. NDepend is a static analysis tool for .NET that checks your code ba
[WPF] Declare global hotkeys in XAML with NHotkey
A common requirement for desktop applications is to handle system-wide hotkeys, in order to intercept keyboard shortcuts even when they don’t have focus. Unfortunately, there is no built-in feature in the .NET framework to do it. Of course, this is n
Tackling timeout issues when uploading large files with HttpWebRequest
If you ever had to upload large volumes of data over HTTP, you probably ran into timeout issues. The default Timeout value for HttpWebRequest is 100 seconds, which means that if it takes more than that from the time you send the request headers to th
Uploading data with HttpClient using a "push" model
If you have used the HttpWebRequest class to upload data, you know that it uses a “push” model. What I mean is that you call the GetRequestStream method, which opens the connection if necessary, sends the headers, and returns a stream on which you ca
[WinRT] Toggle selection of a list item on long press
As you probably know, the standard way to select or deselect an item in a WinRT list control is to slide it up or down a little. Although I rather like this gesture, it’s not very intuitive for users unfamiliar with Modern UI. And it gets even more c
Running a custom tool automatically when a file is modified
As far as I can remember, Visual Studio always had something called “custom tools”, also known as single-file generators. When you apply such a tool to a file in your project, it will generate something (typically code, but not necessarily) based on
Strongly typed helper for toast notifications
Windows 8 provides an API for showing toast notifications. Unfortunately, it’s very cumbersome: to define the content of a notification, you must use a predefined template that is provided in the form of an XmlDocument, and set the value for each fie
Showing result suggestions in a WinRT SearchBox: bug regarding the image
Today I ran into a strange problem that made me waste an hour or two, so I thought I’d write about it in case someone else faces the same issue. The SearchBox control was introduced in Windows 8.1 to enable search scenarios from within a Windows Stor
An easy and secure way to store a password using Data Protection API
If you’re writing a client application that needs to store user credentials, it’s usually not a good idea to store the password as plain text, for obvious security reasons. So you need to encrypt it, but as soon as you start to think about encryption
Detecting dependency property changes in WinRT
Today I’d like to share a trick I used while developing my first Windows Store application. I’m very new to this technology and it’s my first article about it, so I hope I won’t make a fool of myself… It’s often useful to be notified when the value o
Using C# 5 caller info attributes when targeting earlier versions of the .NET framework
Caller info attributes are one of the new features of C# 5. They’re attributes applied to optional method parameters that enable you to pass caller information implicitly to a method. I’m not sure that description is very clear, so an example will he
Little known new features in Visual Studio 2012
Visual Studio 2012 RC is out since last week, and even though I didn’t have much time to play with it yet, I think I like it so far. Lots of things have already been said about the design, and about the most important new features, but there are also
[WPF] Using Linq to shape data in a CollectionView
WPF provides a simple mechanism for shaping collections of data, via the ICollectionView interface and its Filter, SortDescriptions and GroupDescriptions properties: // Collection to which the view is bound public ObservableCollection People { get; p
[WPF] Creating parameterized styles with attached properties
Today I’d like to share a trick that I used quite often in the past few months. Let’s assume that in order to improve the look of your application, you created custom styles for the standard controls: OK, I’m not a designer… but it will serve the pur
[WPF 4.5] Subscribing to an event using a markup extension
It’s been a while since I last wrote about markup extensions… The release of Visual Studio 11 Developer Preview, which introduces a number of new features to WPF, just gave me a reason to play with them again. The feature I’m going to discuss here is
Tail recursion in C#
Regardless of the programming language you’re using, there are tasks for which the most natural implementation uses a recursive algorithm (even if it’s not always the optimal solution). The trouble with the recursive approach is that it can use a lot
[WPF] Display an animated GIF image
Note: The code in this article is out of date; the current code is hosted on GitHub. WPF is a great technology, but sometimes it seems to be missing some really basic features… A frequently mentioned example is the lack of support for animated GIF im
[WPF] How to bind to data when the DataContext is not inherited
The DataContext property in WPF is extremely handy, because it is automatically inherited by all children of the element where you assign it; therefore you don’t need to set it again on each element you want to bind. However, in some cases the DataCo
[Entity Framework] Using Include with lambda expressions
I’m currently working on a project that uses Entity Framework 4. Even though lazy loading is enabled, I often use the ObjectQuery.Include method to eagerly load associated entities, in order to avoid database roundtrips when I access them: var query
[WPF] A simpler Grid using XAML attribute syntax
The Grid control is one of the most frequently used containers in WPF. It allows to layout elements easily in rows and columns. Unfortunately the code to declare it, while simple to write, is made quite awkward by the use of the property element synt
[C#] A simple implementation of the WeakEvent pattern
As you probably know, incorrect usage of events is one of the main causes for memory leaks in .NET applications : an event keeps references to its listener objects (through a delegate), which prevents the garbage collector from collecting them when t
Automating null checks with Linq expressions
The problem Have you ever written code like the following ? X xx = GetX(); string name = "Default"; if (xx != null && xx.Foo != null && xx.Foo.Bar != null && xx.Foo.Bar.Baz != null) { name = xx.Foo.Bar.Baz.Name; } I bet you have ! You just need to ge
[VS2010] Binding support in InputBindings
THE feature that was missing from WPF ! Visual Studio 2010 beta 2 has been released last week, and it brings to WPF a long awaited feature : support for bindings in InputBindings. As a reminder, the issue in previous releases was that the Command pro
[C# 4.0] Implementing a custom dynamic object
If you’ve been following the news about .NET, you probably know that the upcoming version 4.0 of C# introduces a new dynamic type. This type allows to access members of an object which are not statically known (at compile time). These members will be