Actualités

252 articles
flux à jour
IN
InfoQ News · Code Reviews

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

3 sept. 2026
IN
InfoQ News · Rust

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

3 sept. 2026
IN
InfoQ News · QCon San Francisco 2025

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

3 sept. 2026
IN
InfoQ News · Machine Learning

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

3 sept. 2026
JN
JetBrains .NET Blog · Net-tools

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

2 sept. 2026
IN
InfoQ News · Machine Learning

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

2 sept. 2026
IN
InfoQ News · Voice-enabled UI

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

2 sept. 2026
IN
InfoQ News · Agents

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

2 sept. 2026
IN
InfoQ News · Standardization

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

2 sept. 2026
NT
.NET Tips · .NET

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

2 sept. 2026
IN
InfoQ News · Agents

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

1 sept. 2026
IN
InfoQ News · AI-Assisted Engineering Certification

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

1 sept. 2026
IN
InfoQ News · QCon San Francisco 2025

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

1 sept. 2026
IN
InfoQ News · Terraform

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

1 sept. 2026
IN
InfoQ News · AI Development

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

31 août 2026
IN
InfoQ News · Azul Payara

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

31 août 2026
IN
InfoQ News · Cloud

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:

31 août 2026
NT
.NET Tips · .NET

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.

30 août 2026
MD
Microsoft DevBlogs .NET · .NET

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

27 août 2026
DN
Developpez.com .NET · Visual Studio 2026

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

26 août 2026
NT
.NET Tips · .NET

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

26 août 2026
MD
Microsoft DevBlogs .NET · .NET

.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.

25 août 2026
MD
Microsoft DevBlogs .NET · .NET

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

24 août 2026
MD
Microsoft DevBlogs .NET · .NET

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.

24 août 2026
NT
.NET Tips · .NET

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.

23 août 2026
JN
JetBrains .NET Blog · Ai

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

19 août 2026
JN
JetBrains .NET Blog · Net-tools

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

19 août 2026
NT
.NET Tips · .NET

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

19 août 2026
NT
.NET Tips · .NET

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

16 août 2026
JS
Jon Skeet's Coding Blog · Programming

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

14 août 2026
MD
Microsoft DevBlogs .NET · .NET

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

13 août 2026
MD
Microsoft DevBlogs .NET · .NET

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.

12 août 2026
NT
.NET Tips · .NET

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

12 août 2026
MD
Microsoft DevBlogs .NET · .NET

.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.

11 août 2026
MD
Microsoft DevBlogs .NET · .NET

.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.

11 août 2026
JN
JetBrains .NET Blog · Net-tools

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

10 août 2026
NT
.NET Tips · .NET

.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.

9 août 2026
MD
Microsoft DevBlogs .NET · .NET

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:

6 août 2026
JN
JetBrains .NET Blog · Net-tools

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

5 août 2026
MD
Microsoft DevBlogs .NET · .NET

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.

4 août 2026
JN
JetBrains .NET Blog · Net-tools

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

4 août 2026
DN
Developpez.com .NET · Programming

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.

4 août 2026
NT
.NET Tips · .NET

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.

2 août 2026
JN
JetBrains .NET Blog · Net-tools

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

30 juil. 2026
DN
Developpez.com .NET · Visual Studio 2026

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

30 juil. 2026
DN
Developpez.com .NET · Visual Studio

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

29 juil. 2026
NT
.NET Tips · Architecture

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

29 juil. 2026
DN
Developpez.com .NET · Rider

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

28 juil. 2026
JN
JetBrains .NET Blog · Net-tools

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

22 juil. 2026
JN
JetBrains .NET Blog · Net-tools

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

22 juil. 2026
JN
JetBrains .NET Blog · Net-tools

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

22 juil. 2026
JN
JetBrains .NET Blog · Net-tools

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

15 juil. 2026
JN
JetBrains .NET Blog · Net-tools

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,

15 juil. 2026
JS
Jon Skeet's Coding Blog · C#

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

11 juil. 2026
DN
Developpez.com .NET · Rider

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

9 juil. 2026
IN
InfoQ News · QCon San Francisco 2025

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

9 juil. 2026
IN
InfoQ News · Kubernetes

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

9 juil. 2026
IN
InfoQ News · Bugs and Hotfixes

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

9 juil. 2026
IN
InfoQ News · Real Time

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

9 juil. 2026
IN
InfoQ News · AI Architecture

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

9 juil. 2026
IN
InfoQ News · Platform Engineering

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

9 juil. 2026
IN
InfoQ News · Kubernetes

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

9 juil. 2026
IN
InfoQ News · Kubernetes

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

8 juil. 2026
IN
InfoQ News · AI

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

8 juil. 2026
IN
InfoQ News · Caching

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

7 juil. 2026
IN
InfoQ News · Cloud

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

7 juil. 2026
IN
InfoQ News · QCon San Francisco 2025

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

7 juil. 2026
IN
InfoQ News · Scaling

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

7 juil. 2026
IN
InfoQ News · Node.js

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

7 juil. 2026
IN
InfoQ News · Grails

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

6 juil. 2026
JN
JetBrains .NET Blog · Net-tools

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.

6 juil. 2026
NT
.NET Tips · .NET

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

5 juil. 2026
NT
.NET Tips · .NET

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

1 juil. 2026
MD
Microsoft DevBlogs .NET · .NET

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

30 juin 2026
MD
Microsoft DevBlogs .NET · .NET

.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.

29 juin 2026
MD
Microsoft DevBlogs .NET · .NET

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

29 juin 2026
MD
Microsoft DevBlogs .NET · .NET

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.

29 juin 2026
NT
.NET Tips · .NET

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

28 juin 2026
NT
.NET Tips · .NET

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

26 juin 2026
JN
JetBrains .NET Blog · Net-tools

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

25 juin 2026
NT
.NET Tips · .NET

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.

21 juin 2026
DN
Developpez.com .NET · Visual Studio

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

18 juin 2026
MD
Microsoft DevBlogs .NET · .NET

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

17 juin 2026
JN
JetBrains .NET Blog · JetBrains

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

17 juin 2026
NT
.NET Tips · .NET

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

14 juin 2026
JN
JetBrains .NET Blog · Net-tools

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

12 juin 2026
DN
Developpez.com .NET · .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é 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

11 juin 2026
MD
Microsoft DevBlogs .NET · .NET

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.

10 juin 2026
MD
Microsoft DevBlogs .NET · .NET

.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.

MD
Microsoft DevBlogs .NET · .NET

.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.

MD
Microsoft DevBlogs .NET · .NET

.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.

JN
JetBrains .NET Blog · Net-tools

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

NT
.NET Tips · .NET

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

DN
Developpez.com .NET · Security

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

JN
JetBrains .NET Blog · Net-tools

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

NT
.NET Tips · Career Development

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

NT
.NET Tips · Books

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

NT
.NET Tips · .NET

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

JN
JetBrains .NET Blog · Net-tools

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

DN
Developpez.com .NET · Visual Studio 2026

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

MD
Microsoft DevBlogs .NET · .NET

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.

JN
JetBrains .NET Blog · Net-tools

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

JN
JetBrains .NET Blog · Net-tools

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

JN
JetBrains .NET Blog · Net-tools

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

JN
JetBrains .NET Blog · Net-tools

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.

JN
JetBrains .NET Blog · Net-tools

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

DN
Developpez.com .NET · Preview

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

14 avr. 2026
AG
Anthony Giretti's .NET Blog · .NET

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...

DN
Developpez.com .NET · Agents

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

AG
Anthony Giretti's .NET Blog · .NET

.NET 10: System.Text.Json Improvements

Introduction System.Text.Json continues to evolve in .NET 10 with meaningful improvements focused on correctness and...

AG
Anthony Giretti's .NET Blog · .NET

.NET 10: Zip and GZip API Improvements

Introduction Compression APIs like ZipArchive and GZipStream have been part of .NET for years. They’ve...

19 janv. 2026
AG
Anthony Giretti's .NET Blog · .NET

.NET 10: Post-Quantum Cryptography Comes to .NET

Introduction Quantum computing is no longer just a research topic. As the technology matures, the...

19 janv. 2026
JS
Jon Skeet's Coding Blog · Election 2029

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

18 janv. 2026
JS
Jon Skeet's Coding Blog · Election 2029

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

17 janv. 2026
DN
Developpez.com .NET · AI

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

14 janv. 2026
AG
Anthony Giretti's .NET Blog · .NET

.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...

11 janv. 2026
AG
Anthony Giretti's .NET Blog · .NET

.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...

11 janv. 2026
AG
Anthony Giretti's .NET Blog · Angular

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...

3 janv. 2026
JS
Jon Skeet's Coding Blog · C#

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

31 déc. 2025
AG
Anthony Giretti's .NET Blog · ASP.NET Core

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...

17 déc. 2025
AG
Anthony Giretti's .NET Blog · ASP.NET Core

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...

16 déc. 2025
AG
Anthony Giretti's .NET Blog · ASP.NET Core

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,...

13 déc. 2025
AG
Anthony Giretti's .NET Blog · .NET

C# 14: User-Defined Compound Assignment Operators

Introduction C# 14 brings an interesting upgrade to operator overloading: custom types can now define...

23 nov. 2025
AG
Anthony Giretti's .NET Blog · .NET

C# 14: Introducing partial constructors and partial events

Introduction C# 14 introduces a subtle but genuinely useful improvement for developers working with large...

23 nov. 2025
AG
Anthony Giretti's .NET Blog · .NET

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...

23 nov. 2025
AG
Anthony Giretti's .NET Blog · .NET

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...

23 nov. 2025
AG
Anthony Giretti's .NET Blog · .NET

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,...

22 nov. 2025
AG
Anthony Giretti's .NET Blog · .NET

C# 14: Introducing Null-Conditional Assignment

Introduction Every new C# release brings its share of improvements to how we write safer...

21 nov. 2025
DN
Developpez.com .NET · .NET 10

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

18 nov. 2025
DN
Developpez.com .NET · .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

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 :

18 nov. 2025
AG
Anthony Giretti's .NET Blog · .NET

C# 14: Introducing Extension Members

Introduction C# continues to evolve with every major release, and C# 14 is no exception.This...

17 nov. 2025
AG
Anthony Giretti's .NET Blog · C#

C# 14: Introducing Interceptors

Introduction C# 14 ships with a feature that sounds almost too good to be true:...

15 nov. 2025
AG
Anthony Giretti's .NET Blog · .NET

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...

15 nov. 2025
DN
Developpez.com .NET · Visual Studio 2026

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

14 nov. 2025
DN
Developpez.com .NET · .NET 10

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

12 nov. 2025
DN
Developpez.com .NET · Visual Studio 2026

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

12 nov. 2025
DN
Developpez.com .NET · Visual Studio 2022

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

DN
Developpez.com .NET · CoPilot

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

20 oct. 2025
DN
Developpez.com .NET · Agents

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

TL
Thomas Levesque's .NET Blog · .NET 10

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

DN
Developpez.com .NET · Visual Studio 2022

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

DN
Developpez.com .NET · AI

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

26 août 2025
DN
Developpez.com .NET · VS Code

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

20 août 2025
JS
Jon Skeet's Coding Blog · C#

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

29 juil. 2025
JS
Jon Skeet's Coding Blog · C#

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

19 juil. 2025
DN
Developpez.com .NET · VS Code

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

DN
Developpez.com .NET · C# 14

Exploration des membres d'extension en C# 14 : préservation de l'énorme quantité de méthodes d'extension paramètre &quot;This&quot; 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

JS
Jon Skeet's Coding Blog · 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

13 avr. 2025
JS
Jon Skeet's Coding Blog · C#

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.

27 mars 2025
JS
Jon Skeet's Coding Blog · Election 2029

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

27 mars 2025
JS
Jon Skeet's Coding Blog · Election 2029

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

16 mars 2025
JS
Jon Skeet's Coding Blog · Election 2029

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

10 mars 2025
AG
Anthony Giretti's .NET Blog · .NET

C# 13: Introducing the new escape sequence

Introduction C# 13 quietly introduced a new escape sequence that’ll make terminal and low-level devs...

TL
Thomas Levesque's .NET Blog · GitHub Actions

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

25 avr. 2024
TL
Thomas Levesque's .NET Blog · Cloudflare

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

TL
Thomas Levesque's .NET Blog · .NET Core

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

19 sept. 2022
TL
Thomas Levesque's .NET Blog · .NET Framework

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

12 nov. 2021
TL
Thomas Levesque's .NET Blog · .NET 6

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

TL
Thomas Levesque's .NET Blog · .NET Core

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

19 mars 2021
TL
Thomas Levesque's .NET Blog · .NET Core

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

23 déc. 2020
TL
Thomas Levesque's .NET Blog · Programming

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

7 déc. 2020
TL
Thomas Levesque's .NET Blog · .NET Core

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

23 nov. 2020
TL
Thomas Levesque's .NET Blog · Database

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

30 oct. 2020
TL
Thomas Levesque's .NET Blog · Testing

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

27 sept. 2020
TL
Thomas Levesque's .NET Blog · Cosmos DB

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

17 sept. 2020
TL
Thomas Levesque's .NET Blog · Dependency Injection

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

31 août 2020
TL
Thomas Levesque's .NET Blog · .NET Core

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

23 juil. 2020
TL
Thomas Levesque's .NET Blog · .NET Core

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

27 juin 2020
TL
Thomas Levesque's .NET Blog · Git

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

TL
Thomas Levesque's .NET Blog · .NET MAUI

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

TL
Thomas Levesque's .NET Blog · Database

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

TL
Thomas Levesque's .NET Blog · Programming

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

TL
Thomas Levesque's .NET Blog · .NET

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

TL
Thomas Levesque's .NET Blog · OAuth 2.0

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

28 mars 2020
TL
Thomas Levesque's .NET Blog · .NET Core

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

18 mars 2020
TL
Thomas Levesque's .NET Blog · .NET Core

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

30 janv. 2020
TL
Thomas Levesque's .NET Blog · .NET Core

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

20 déc. 2019
TL
Thomas Levesque's .NET Blog · Unit Testing

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<

19 nov. 2019
TL
Thomas Levesque's .NET Blog · Programming

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

18 nov. 2019
TL
Thomas Levesque's .NET Blog · Cosmos DB

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

15 oct. 2019
TL
Thomas Levesque's .NET Blog · Cosmos DB

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

14 oct. 2019
TL
Thomas Levesque's .NET Blog · Cosmos DB

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

15 juil. 2019
TL
Thomas Levesque's .NET Blog · .NET Core

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

18 mars 2019
TL
Thomas Levesque's .NET Blog · .NET Core

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

10 janv. 2019
TL
Thomas Levesque's .NET Blog · .NET Core

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

24 déc. 2018
TL
Thomas Levesque's .NET Blog · .NET Core

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

23 nov. 2018
TL
Thomas Levesque's .NET Blog · .NET Core

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

25 sept. 2018
TL
Thomas Levesque's .NET Blog · .NET Core

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

4 sept. 2018
TL
Thomas Levesque's .NET Blog · .NET Core

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

20 juil. 2018
TL
Thomas Levesque's .NET Blog · .NET Core

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

17 avr. 2018
TL
Thomas Levesque's .NET Blog · Azure Functions

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

30 mars 2018
TL
Thomas Levesque's .NET Blog · .NET Core

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

27 mars 2018
TL
Thomas Levesque's .NET Blog · Git

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

TL
Thomas Levesque's .NET Blog · API

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

25 févr. 2018
TL
Thomas Levesque's .NET Blog · Visual Studio

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

13 nov. 2017
TL
Thomas Levesque's .NET Blog · Visual Studio

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

18 sept. 2017
TL
Thomas Levesque's .NET Blog · .NET

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#

26 août 2017
TL
Thomas Levesque's .NET Blog · .NET Core

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

29 mars 2017
TL
Thomas Levesque's .NET Blog · Programming

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

23 févr. 2017
TL
Thomas Levesque's .NET Blog · API

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

20 févr. 2017
TL
Thomas Levesque's .NET Blog · Git

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

17 janv. 2017
TL
Thomas Levesque's .NET Blog · Async/Await

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

8 déc. 2016
TL
Thomas Levesque's .NET Blog · Visual Studio

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

23 août 2016
TL
Thomas Levesque's .NET Blog · Programming

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,

25 juil. 2016
TL
Thomas Levesque's .NET Blog · Async/Await

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) {

21 juin 2016
TL
Thomas Levesque's .NET Blog · Nuget

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

20 avr. 2016
TL
Thomas Levesque's .NET Blog · Visual Studio

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

16 avr. 2016
TL
Thomas Levesque's .NET Blog · Unit Testing

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),

17 janv. 2016
TL
Thomas Levesque's .NET Blog · Async/Await

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

31 déc. 2015
TL
Thomas Levesque's .NET Blog · Async/Await

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

11 nov. 2015
TL
Thomas Levesque's .NET Blog · WPF

[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

5 sept. 2015
TL
Thomas Levesque's .NET Blog · Programming

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

16 août 2015
TL
Thomas Levesque's .NET Blog · Programming

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

30 juil. 2015
TL
Thomas Levesque's .NET Blog · .NET

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

28 juin 2015
TL
Thomas Levesque's .NET Blog · Programming

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

21 juin 2015
TL
Thomas Levesque's .NET Blog · Unit Testing

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

14 juin 2015
TL
Thomas Levesque's .NET Blog · .NET Framework

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

TL
Thomas Levesque's .NET Blog · .NET

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

13 mars 2015
TL
Thomas Levesque's .NET Blog · Testing

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

10 mars 2015
TL
Thomas Levesque's .NET Blog · Programming

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

24 févr. 2015
TL
Thomas Levesque's .NET Blog · Unit Testing

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

1 févr. 2015
TL
Thomas Levesque's .NET Blog · WPF

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

17 janv. 2015
TL
Thomas Levesque's .NET Blog · LINQ

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

7 déc. 2014
TL
Thomas Levesque's .NET Blog · Programming

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

23 nov. 2014
TL
Thomas Levesque's .NET Blog · Programming

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

17 nov. 2014
TL
Thomas Levesque's .NET Blog · Async/Await

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

TL
Thomas Levesque's .NET Blog · Unit Testing

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

TL
Thomas Levesque's .NET Blog · Visual Studio

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

12 oct. 2014
TL
Thomas Levesque's .NET Blog · Programming

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

30 juil. 2014
TL
Thomas Levesque's .NET Blog · .NET Framework

[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

5 févr. 2014
TL
Thomas Levesque's .NET Blog · HTTP

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

14 janv. 2014
TL
Thomas Levesque's .NET Blog · Programming

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

30 nov. 2013
TL
Thomas Levesque's .NET Blog · Programming

[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

21 nov. 2013
TL
Thomas Levesque's .NET Blog · Visual Studio

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

14 nov. 2013
TL
Thomas Levesque's .NET Blog · API

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

10 nov. 2013
TL
Thomas Levesque's .NET Blog · Programming

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

TL
Thomas Levesque's .NET Blog · API

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

TL
Thomas Levesque's .NET Blog · Programming

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

21 avr. 2013
TL
Thomas Levesque's .NET Blog · .NET Framework

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

13 juin 2012
TL
Thomas Levesque's .NET Blog · Visual Studio

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

TL
Thomas Levesque's .NET Blog · WPF

[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

30 nov. 2011
TL
Thomas Levesque's .NET Blog · WPF

[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

TL
Thomas Levesque's .NET Blog · Visual Studio

[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

23 sept. 2011
TL
Thomas Levesque's .NET Blog · Programming

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

2 sept. 2011
TL
Thomas Levesque's .NET Blog · WPF

[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

27 mars 2011
TL
Thomas Levesque's .NET Blog · WPF

[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

21 mars 2011
TL
Thomas Levesque's .NET Blog · Entity Framework

[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

TL
Thomas Levesque's .NET Blog · WPF

[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

20 juil. 2010
TL
Thomas Levesque's .NET Blog · Programming

[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

TL
Thomas Levesque's .NET Blog · LINQ

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

21 févr. 2010
TL
Thomas Levesque's .NET Blog · Visual Studio

[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

26 oct. 2009
TL
Thomas Levesque's .NET Blog · Programming

[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