.NET itself, rather than anything you build on it: the SDK, the command line, the container, the compiler, the debugger and the profiler.

It is the material that is easy to never learn, because you can ship for years without knowing how service lifetimes resolve or what the CLI does when it restores. It is also the material that decides how long the awkward days last.

Start anywhere. Nothing here depends on anything else here.

What .NET Is

The naming has changed more than once, so this is the short version of which thing is which.

The SDK, the CLI and the Project File

Building, running and publishing from the command line, and the project settings that control it.

Dependency Injection

The container ships with the platform, so most questions here are about lifetimes and about the error message you get when one is wrong.

Reflection, Attributes and Source Generators

Reading and generating types at runtime and at compile time, and when the compile-time version is the better answer.

Console Applications and the Operating System

Talking to the machine .NET is running on.

NuGet Packages

Creating and publishing a package of your own.

Debugging and Profiling

Getting the debugger to tell you something you did not already know.

Benchmarking and Performance

Measuring before changing, which is the whole discipline in one line.

More Platform Topics

Odds and ends about the runtime and the tooling around it.

Where to Go Next

Where the platform meets the code you are actually writing:

The fastest way to get good at this layer is to read one error message properly instead of searching for it. Most of them name the exact registration, file or framework version that is wrong.