Hidden Gems in Software Development

.NET ships an enormous surface area, and the documentation rewards teams that read past the first page of release notes. Most projects never enable Central Package Management, never replace ad-hoc string.IndexOfAny calls with SearchValues<T>, and never turn on the nullable reference type analyzers that would have caught last week’s NullReferenceException at compile time. The features exist. The defaults just don’t make them visible.

This collection documents the APIs, MSBuild properties, Roslyn analyzers, and CLI flags that already sit in the framework but rarely get switched on. Each article picks a single capability, explains the problem it solves, and shows the diff that adopts it. The goal is not breadth — it is the kind of specificity that lets you copy the relevant lines into your own Directory.Build.props or analyzer ruleset the same afternoon.

Performance-oriented gems get particular attention because they often deliver measurable throughput without a refactor. SearchValues<T> collapses byte-set lookups into vectorized intrinsics. CompositeFormat lifts format-string parsing out of hot paths. StringValues removes allocations in HTTP header handling. Each of these existed for a release or two before becoming visible in profiles, and each replaces a pattern most teams still ship.

The collection also covers build-system and tooling gems that change daily friction more than headline performance. Central Package Management consolidates version drift across multi-project solutions. The BuildingInsideVisualStudio MSBuild property lets you condition slow targets out of IDE builds without breaking CI. .NET CLI flags around incremental restore and binary logging shorten the inner loop in ways the defaults don’t.

These are not framework deep dives for the sake of trivia. They are the small adoption decisions that compound across a codebase — the difference between a .NET solution that feels modern and one that runs on the same patterns it had in 2019.

Manage NuGet Packages Centrally

Manage NuGet Packages Centrally

For over 12 years, NuGet package management has been part of the .NET ecosystem with direct integrations to various IDEs, CLIs and build systems. But a feature took 12 years before it appeared and certainly needs some more maintenance until it is mature!