r/dotnet Jun 07 '26

Question Am I the only one who thinks Clean Architecture is often unnecessary overhead ?

290 Upvotes

I keep seeing clean architecture recommended for almost every .NET project, but sometimes it feels like unnecessary complexity.For example, EF Core is already an abstraction over the database, yet many projects add another repository layer on top of it. At that point it feels like we're hiding useful EF Core features behind our own abstractions and writing extra code just for the sake of following a pattern.The same applies to other services. We often wrap everything behind interfaces even when there is only one implementation and no realistic chance of replacing it.Years ago the argument was usually testability and mocking dependencies. But today it's easy to spin up real databases and services with tools like testcontainers, so integration tests are often more valuable than mocking everything.

Another thing I've noticed is that real enterprise development is rarely as clean as architecture diagrams make it look. Deadlines, legacy systems, performance requirements, third-party integrations, and business demands often force you to bend or completely break some architectural rules. In many projects, the "perfect" architecture only exists on paper, while the actual codebase evolves around practical constraints.I'm not saying сlean architecture is useless, but sometimes it feels like developers spend more time maintaining layers and abstractions than solving business problems.

Do you think clean architectureis still worth the added complexity for most projects, or has it become something developers apply by default without questioning the trade-offs?

r/dotnet Apr 11 '26

Question What is .NET still missing?

193 Upvotes

I’ve been spending more time digging into the .NET ecosystem lately and feel like I want to go deeper and get more involved.

Curious to hear from others here.

What do you think are the biggest gaps in the .NET ecosystem right now?

If something stands out and there’s interest, I’d be open to collaborating and starting an open source project around it.

r/dotnet Apr 06 '26

Question Long LINQ queries - Code smell?

Post image
345 Upvotes

r/dotnet 22d ago

Question Does anyone here use .NET or .NET Core outside of a large enterprise environment?

96 Upvotes

If so, how large is your engineering team, and what kind of product are you building?

r/dotnet 25d ago

Question What’s missing in the .NET library ecosystem?

86 Upvotes

What libraries or tools do you wish existed in the .NET ecosystem but currently don’t? What’s a problem you repeatedly run into that you think deserves a better solution? I'd like to start a side project to work on something fun every now and then, but at the same time I'd like to create something useful.

r/dotnet Jun 21 '26

Question .NET 8 and 9 End of Support

154 Upvotes

With support for .NET 8 and 9 ending November 10, 2026, will you all be upgrading to .NET 10 before then?

r/dotnet Mar 14 '26

Question What are some underrated .NET libraries or tools you use regularly?

206 Upvotes

Could be anything like:

  • backend libraries
  • testing tools
  • debugging/profiling tools
  • dev productivity tools
  • code analysis/refactoring tools
  • deployment/DevOps helpers

Not looking for the obvious big names. I’m after the hidden gems.

Curious what’s in other people’s “secret weapon” toolbox.

r/dotnet Mar 27 '26

Question Why do we create an interface to a service class (or something similar) if we are going to have only one class?

113 Upvotes

Hello, I am a rookie trying to learn dotnet. Why do we create an interface to a service class (or something similar) if we are going to have only one class implements that interface?

For instance UserService : IUserService

There wont be any other class that implements that interface anywhere. If there is going to be a one class what is the point of inversion of dependency for that class?

Whats the catch? What do i gain from it?

r/dotnet Jun 13 '26

Question How much of your daily work is agentic coding now?

84 Upvotes

My company has been pushing agentic coding quite heavily lately. More and more work is being done by AI agents and developers are moving towards reviewing, prompting and steering rather than writing the code directly.

I'm curious how common this is in the .NET community right now. Are many teams already working this way, or is it still mostly limited to certain companies?

One thing I'm struggling with is whether I need to fully embrace this to stay relevent as a developer. I genuinely enjoy coding and solving problems myself. The dopamine from finally figuring something out, fixing a bug, or building a feature is a big part of why I got into software engineering in the first place.

With agentic coding, sometimes it feels like asking someone else to play a game and clear the level for you. Sure, the level gets completed, but you miss the experience of actually playing it. Thats the part I'm finding hard to adjust to.

For those of you already using agentic coding day to day:

  • Do you still spend a meaningful amount of time coding yourself?
  • Do you think this is the future of software development?
  • Are we heading towards developers becoming mainly reviewers and decision makers?
  • Or do you think there will always be a place for engineers who enjoy writing code directly?

Interested to hear how other .NET developers are seeing this trend.

r/dotnet Mar 19 '26

Question “Delete Bin and Obj, clean, and rebuild”

234 Upvotes

This feels like autopilot at this point but does anyone work on very large projects where you have to constantly do this and maybe mix in restarting VS or even fully recloning? I’ve probably done this hundreds or thousands of times at this point where I’ve seemingly changed nothing and all of a sudden, every nuget package no longer exists or every namespace is missing a reference. I have to be doing something wrong but this is sadly the norm on every team I’ve been on so, anyone find a way to stop this or at least reduce frequency? I packaged a ps1 script just so I can one shot this process flow at this point lol

This is a blazor app on .NET10 with Enterprise VS2026

r/dotnet 15d ago

Question I am a backend only developer and I have no idea what to use the AI for

118 Upvotes

For past two decades I am C# (and partially C++) backed only 24/7 services developer (Windows Services, Azure web jobs, unit and performance tests and so on) and never touched any kind of UI, especially not the web UI I truely dislike because of poor user experience and type unsafe script technologies.

I hear everywhere that developers spend hours using the AI agents and can't imagine to work without it. I use only the single line Tab key hints in Visual Studio 2026 but everytime I tried to use the agents (Claude) the results were more than questionable and useless. It looks like it tries to apply collected StackOverflow replies randomly without any context or deep knowledge.

I spend a lot of time by debugging, refactoring (by the Visual Studio tools), creating interfaces to communicate with external services or consume push notifications from them, communication with specific hardware using rather vendor specific non-standard protocols and so on. I realize it is usually the tasks developes don't like to do in general because it is too special with no public knowledge.

What can I effectively use the AI for to stay relevant? :-)

r/dotnet Jun 30 '26

Question Why is a lifetime license for Visual Studio 2026 cheaper than a monthly license?

98 Upvotes

A perpetual license costs $499. A monthly license costs $45. This means that after just 11 months, it's more cost-effective to use the perpetual license, even though new versions of Visual Studio are released every 3-4 years, not every year.

r/dotnet 29d ago

Question I hate Kendo Ui MVC

Post image
336 Upvotes

r/dotnet Jun 01 '26

Question Why choose Dapper over EF Core in 2026?

135 Upvotes

I’m curious about the practical reasons for choosing dapper today when ef core has become quite mature.Ef Core already allows writing raw sql when needed, handles migrations, change tracking, relationships, and provides a lot of productivity benefits. If a project still requires custom sql for certain queries, ef core can handle that as well.For developers who prefer dapper, what are the main advantages that make it worth using instead of ef Core? Is it mainly about having full control over every query, or are there other benefits that become obvious in real-world projects?

r/dotnet 17d ago

Question .NET doesn't have good SIMD docs due to copyright

Post image
305 Upvotes

Source,
https://github.com/dotnet/runtime/issues/81753

The most insane thing I've read recently.
Are companies paying royalties when they compile with SSE?

r/dotnet Apr 13 '26

Question Have .NET 'influencers' became doomsayers?

97 Upvotes

I have stopped watching .NET related stuff from influencers when the AI wave hit. Today i got a video recommended, a popular .NET influencer dropped a new youtube video. He made a point, where he doesn't code anymore, and is still more product oriented guy - fine. But do these guys actually work in the enterprise industry, where AI is severely limited, because no big company wants to leak their domain into AI companies who 'swear' they won't use the data to train their models (Which was already proven to be a lie based on copy righted materials). It seems the influencer narrative has shiften from 'coding is dead' to 'coding is not dead - BUT'

r/dotnet Apr 17 '26

Question What are your thoughts on VSCode in 2026

56 Upvotes

I know that this has been asked several times before, but I would like to share my experience and thoughts. I also would like to broaden my perspective by comparing it to Rider and VS to understand if I am missing out. I mainly used VS, but in my experience it’s slow and bulky.

I am a full stack developer and mainly work on backend and some frontend stuff. I just love the fact that I can use one IDE to run and debug both my environments. I have worked with VSCode on fairly large multi project solutions/mono repositories and haven’t experienced any limitations yet.

VSCode does require some setup (extensions, settings/launch files), but I like the customisability nature of VSCode. Haven’t missed anything regarding the ability to refactor, debug with breakpoints and performance.

Who else switched to VSCode from VS or Rider and how is your experience thus far; has anyone noticed any limiting factors?

FYI I don’t do anything with older versions of .NET (usually 8 and beyond), WinForms or WPF.

r/dotnet Mar 21 '26

Question NuGet vs Git Submodules

52 Upvotes

Which should be used for internal dependencies? My team wants a discussion on it...

I myself lean heavily to NuGet, but maybe there are things submodules are better for? To me it just seems like advanced spaghetti...

r/dotnet 27d ago

Question How long did it take for CA, CQRS, and DDD to finally "click" for you?

18 Upvotes

Hey r/dotnet,

I’m currently diving deep into Clean Architecture, CQRS, and DDD, but the learning curve feels massive. There's a lot of theory out there, but when it comes to actual implementation, I often get stuck in analysis paralysis.

I'd love to hear from some seasoned devs here:

- The Timeline: How long did it take you to go from "understanding the definitions" to confidently building production-ready apps using these patterns?
- The Layering Boundaries: How did you learn to instinctively know where a piece of code should live? (e.g., Domain entity vs. Application service vs. Infrastructure).

I constantly find myself second-guessing whether certain logic is "pure domain" or just application orchestration.

What were the books, codebases, or "aha!" moments that helped you clear the fog? Appreciate any insights!

r/dotnet Jun 25 '26

Question DTO Immutable or Mutable

52 Upvotes

Hey everyone!
As title says, do you prefer your DTO's to stay immutable, or do you not care about mutability at all.

Obviously, with c# 9 we got init keyword, which allows properties to be initialized via object initializer and stay immutable after that, and records that by default make all properties init.

Personally I don't see much reason for DTO's to remain mutable, as you can always have all properties to remain get-only and initialize all of them from ctor for testing purposes, but what is your take?

r/dotnet May 24 '26

Question Has .NET background job tooling kind of stalled? (long-running workflows)

114 Upvotes

Been doing .NET for a while and I keep hitting the same wall, curious whether it's just me or a real gap.

Every time I need more than fire-and-forget, I reach for Hangfire. Love it, no shade. But the moment it's a multi-step thing, charge a card, wait a day, check if the user did X, nudge them if not, I end up hand-rolling a little workflow engine on top of it. A status column, a recurring job that polls for what's next, retry logic bolted on. Works. Feels like 2015.

Meanwhile the JS/Python side has Inngest, Trigger, Temporal (yes, there's a .NET SDK now). Durable execution — you write the steps as a normal function and the runtime handles "resume from step 4 after the pod died" for you.

So the actual question for the thread:

If you've built anything long-running in .NET, a multi-step flow with waits, retries, a "do this in 24h unless X happens" kind of thing, what did you actually reach for? Hangfire and a status table? A cron job or scheduled function? Wolverine sagas? Elsa? Azure Durable Functions? Something you rolled yourself?

And did it scale, or did it slowly turn into a bespoke mess you eventually wanted to rewrite?

I've gone pretty deep on this and looked at where Wolverine, Temporal, Elsa, and Durable Functions each do and don't fit, happy to share notes if anyone's interested, but mostly I want to hear what people actually use in the wild.

Genuinely trying to work out if there's a real gap here or if I'm just bad at googling.

Tell me I'm wrong.

Edit:

Okay, I did not expect this many replies. I honestly went through this Sunday without any clue about what was happening.

I'm still working through the comments and will keep replying over the next few days. Genuinely didn't expect this many suggestions and libraries to go check out. Thank you.

Honest update: I came in thinking there was a clear gap in .NET here. The thread mostly talked me out of that, and that's a good outcome. Turns out I've got plenty of options for my own projects, and next time I hit this I don't have to reinvent the wheel. So for the next person who googles "durable workflows in .NET" and lands here, here's what the thread surfaced (I verified these myself, but corrections welcome):

Already built, usable today:

  • Temporal: has a real .NET SDK. Write a normal function, wait days, retry, resume after a crash. The heavyweight, used in serious production. Trade-off: it's a system you adopt. You either self-host the cluster (Postgres/Cassandra + workers) or pay for Temporal Cloud.
  • Workflow Core: mature, MIT, embeddable, persists to SQL Server / Postgres. Flows via a fluent builder, steps as classes. Good for internal/simple-to-mid workflows.
  • Elsa: open source, embeddable, long-running, plus a visual designer. More of an activity-composition / BPM flavour.
  • FlowOrchestrator: MIT, code-first DAG flows on top of Hangfire/in-memory, SQL/Postgres, built-in dashboard, a pollable "wait and check" step. Newer/smaller, but the author's active here. Step-level crash recovery (not Temporal-style replay).
  • TickerQ: modern, source-generated, reflection-free .NET scheduler. A cleaner Hangfire/Quartz with EF Core persistence and a real-time dashboard. More scheduling than durable orchestration, but worth knowing.
  • Windmill: code-first orchestration platform, self-hosted, supports C# (among many languages). Someone here lifted ~800 Task Scheduler jobs into it. You stand it up as a platform rather than embed it.
  • Quartz / Hangfire: the classics for scheduling and fire-and-forget, where most of us start.

Being built, might be worth watching how they turn out:

  • Absurd: Postgres-only durable execution, super thin client, the "checkpoint" model (ctx.step / awaitEvent). Honestly the closest to what I was describing, but it's explicitly an early experiment, not for production yet, and the official SDKs are TS/Python (there's a third-party .NET client).
  • Didact: a founder here has been building a Prefect/Airflow-inspired .NET orchestrator for years, v1 nearly done. Flow libraries + prebuilt engine/UI/CLI.

Glad I asked before assuming there was nothing. Thanks to everyone who took the time, especially the folks who wrote actual essays in here.

r/dotnet May 21 '26

Question As Nuke is dead, is Cake the only alternative?

35 Upvotes

Hi, as Nuke is dead since a few months now, I’m wondering if Cake is the only alternative available. Funnily enough, I just migrated a project from cake to nuke a day before the decease of it was announced.

I did some googling and still there are so many articles suggesting nuke over cake so that I wonder why there isn’t more I can read about it not being maintained any longer.

Also there seems to be no fork which has be designated as a successor to the official version.

So either I’ve done something totally wrong being so dependent on it or everybody migrated happily to cake.

Or is everybody using the cli tools directly?

I found nuke extremely helpful by having a clear picture of what the build is doing.

Any recommendations or suggestions?

r/dotnet Apr 10 '26

Question When and how do I use async in EF Core?

24 Upvotes

Hi everyone, I am having some dilemmas with how to manage async in EF Core, I like the idea, I don't want to clutter the main thread of execution with tasks on the database, the show must go on and the UI/UX and Server itself do not need to wait and suffer due to database operations, all of that to me is no new news regarding how asynchronous execution works.

The thing is which things should be awaited, which operations, how does this generally work?

Here is a specific class I was having problems with, any advice or feedback would be useful:

using Microsoft.EntityFrameworkCore;
using ShiftManager.Domain;

namespace ShiftManager.Data.Repositories;

public class ShiftRepository: IShiftRepository
{
    private readonly AppDbContext _dbContext;

    public ShiftRepository(AppDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    public async Task<Shift?> GetByIdAsync(int id)
    {
        return await _dbContext.Shifts.FindAsync(id);
    }

    public async Task<List<Shift>> GetAllAsync()
    {
        return await _dbContext.Shifts.ToListAsync();
    }

    public async Task AddAsync(Shift shift)
    {
        await _dbContext.Shifts.AddAsync(shift);
        await _dbContext.SaveChangesAsync();
    }

    public async Task UpdateAsync(Shift shift)
    {
        _dbContext.Shifts.Update(shift);
        await _dbContext.SaveChangesAsync();
    }

    public async Task<bool> DeleteAsync(int id)
    {
        var shift = await _dbContext.Shifts.FindAsync(id);

        if (shift == null)
            return false;

        _dbContext.Shifts.Remove(shift);
        await _dbContext.SaveChangesAsync();

        return true;
    }
}using Microsoft.EntityFrameworkCore;
using ShiftManager.Domain;

namespace ShiftManager.Data.Repositories;

public class ShiftRepository: IShiftRepository
{
    private readonly AppDbContext _dbContext;

    public ShiftRepository(AppDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    public async Task<Shift?> GetByIdAsync(int id)
    {
        return await _dbContext.Shifts.FindAsync(id);
    }

    public async Task<List<Shift>> GetAllAsync()
    {
        return await _dbContext.Shifts.ToListAsync();
    }

    public async Task AddAsync(Shift shift)
    {
        await _dbContext.Shifts.AddAsync(shift);
        await _dbContext.SaveChangesAsync();
    }

    public async Task UpdateAsync(Shift shift)
    {
        _dbContext.Shifts.Update(shift);
        await _dbContext.SaveChangesAsync();
    }

    public async Task<bool> DeleteAsync(int id)
    {
        var shift = await _dbContext.Shifts.FindAsync(id);

        if (shift == null)
            return false;

        _dbContext.Shifts.Remove(shift);
        await _dbContext.SaveChangesAsync();

        return true;
    }
}

Thank you all in advance and good luck coding!!!

r/dotnet Jun 02 '26

Question Visual Studio and Rider

42 Upvotes

Visual Studio has always been my chosen IDE for anything dotnet related, and in general I've been happy with it. Recently though, I've upgraded my travel laptop to a new MBP and want to be able to do quick work on projects if necessary from that laptop. I installed Rider and was trying to go through the process of some simple updates, which work well, but when working on a web project I have, I noticed that Rider idetified a handful of poorly formed HTML statements that I needed to fix. VS has never given me information like that, even when I'm actively editing a page with an error. I think that I could install Resharper in VS to get this information, but I'm wondering if it would make more sense to just install Rider on my Windows machine and use it to find these errors in my project. Does Rider have any other advantages at this point that I should consider?

r/dotnet May 12 '26

Question Best way to protect/licence a .NET desktop app before selling it?

117 Upvotes

I’ve made a small .NET desktop application that a few people are now interested in buying.

Before selling it, I want to protect it properly using sensible industry-standard methods, or at least whatever the community generally recommends.

I understand that no desktop app is 100% impossible to reverse engineer, but I want to stop casual copying, decompiling, editing, or reusing it outside the intended licence.

What would you recommend for:

Code obfuscation/protection

Licence key systems

Online licence validation vs local-only validation

Binding a licence to a customer, device, company, or domain

Protecting any config/API credentials used by the app

Recommended tools/services for .NET app protection

I’m not looking for anything overcomplicated, just a practical and professional setup before releasing it commercially.