"Why .NET 9’s CLI is the Glow-up your workflow deserved"

posted 3 min read

"From Boring White Text to a Dev Experience That Actually Doesn’t Hurt to Look At".

Let’s be real: for years, the .NET CLI felt like that one reliable but incredibly dull friend. It got the job done, but it had the personality of a spreadsheet. If you’re jumping from .NET 7 or 8, you’re in for a shock. Microsoft finally realized that we spend 90% of our lives staring at a terminal, so they decided to make it look—and feel—like it belongs in 2026.

Here is why you, as a Senior Dev, should actually care about the .NET 9 CLI.

1. The "Visual Soul": Goodbye, Walls of Text

The first thing you’ll notice isn’t a new feature; it’s the Terminal Logger. While it started appearing in .NET 8, in .NET 9 it’s the default, and it is polished.

  • Progress Bars that actually move: No more guessing if dotnet build is hanging or just thinking.
  • Clickable Links: Errors now come with direct, clickable links to documentation.
  • Color-Coded Chaos: Warnings are yellow, errors are red, and successes
    are a satisfying green. It sounds minor, but in a massive
    microservices build, your eyes will thank you.

Depending on your terminal (like Windows Terminal or Oh My Posh), you’ll see icons for different project types and build stages.

Pro Tip: Use dotnet build --tl (Terminal Logger) explicitly if you’re on a legacy system, but on .NET 9, it’s just there.

2. Automation & "BuildChecks": The Senior’s Safety Net

This is where it gets interesting for those of us managing large codebases. .NET 9 introduces BuildChecks.

Imagine having a linter, but for your .csproj and build logic.

  • What it does: It analyzes your build process for regressions or "smelly" configurations.
  • The Command: dotnet build /check
  • Why it’s useful: It catches things like "Custom task X is slowing
    down the build" or "You’re using a deprecated MSBuild property." It’s
    basically a code review for your infrastructure.
  • Git Integration: The CLI is Aware

The .NET 9 CLI is now much more "Git-aware." When you run dotnet new, the SDK automatically detects if you're in a Git repo and can initialize .gitignore files that are actually updated for modern .NET workloads (including stuff for DevContainers and GitHub Actions).

Also, the dotnet workload history command is a lifesaver. If a teammate says, "It works on my machine," you can now check exactly what version of the workloads (MAUI, Aspire, etc.) were installed and when they were updated, making environment parity much easier to debug.

4. Cloud-Native & Docker: The "No-Dockerfile" Revolution

You’re a Senior. You know how to write a Dockerfile. But do you want to?

.NET 9 pushes SDK-based Containerization to the limit. You can now publish a fully optimized, secured, and shrunk Docker image without ever touching a Dockerfile.

dotnet publish /t:PublishContainer -c Release

What’s new here?

  • Non-root by default: Security is baked in. Images run as a non-privileged user automatically.
  • Insecure Registries: The CLI now supports pushing to insecure local
    registries (great for local K8s testing) without hacking your Docker
    config.
  • Architecture targeting: Easily cross-compile for ARM64 (Graviton/M1) from an x64 machine using just CLI flags.

5. Azure & Aspire: The "Secret Sauce"

If you aren't using .NET Aspire yet, .NET 9 is the sign you were waiting for. The CLI integration with Azure via the azd (Azure Dev CLI) and dotnet aspire commands is seamless.

  • Smart Provisioning: The CLI can now detect your resource requirements from your code and suggest the right Azure infrastructure.
  • Deployment: azd up isn't just a gimmick anymore; it uses the .NET 9
    SDK to package your apps into container apps with OpenTelemetry
    pre-configured.

6. The Advanced "Power User" Commands

For the automation nerds, these are the commands you’ll be scripting into your CI/CD pipelines:

dotnet test --parallel

Now fully integrated with MSBuild for parallel execution across different Target Frameworks (TFM).

dotnet workload sets

Allows you to "lock" a version of the SDK workloads so your whole team stays on the exact same bits.

dotnet tool update

Faster, cleaner, and handles global vs. local tools with better conflict resolution.

What do I think about this?
.NET 9 isn't just about a faster JIT (though it is faster). It's about Developer Joy. The CLI has moved away from being a "black box of text" to a proactive assistant that helps you build, containerize, and deploy without leaving the keyboard.

If you’re still on .NET 7, you’re essentially working in black and white while the rest of us are in 4K. Time to upgrade.

By One Garlos P. 2026

More Posts

Your Tech Stack Isn’t Your Ceiling. Your Story Is

Karol Modelskiverified - Apr 9

Beyond the Crisis: Why Engineering Your Personal Health Baseline Matters

Huifer - Jan 24

The End of Data Export: Why the Cloud is a Compliance Trap

Pocket Portfolioverified - Apr 6

The Privacy Gap: Why sending financial ledgers to OpenAI is broken

Pocket Portfolioverified - Feb 23

Bridging the Silence: Why Objective Data Outperforms Subjective Health Reports in Elderly Care

Huifer - Jan 27
chevron_left

Related Jobs

View all jobs →

Commenters (This Week)

4 comments
2 comments
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!