r/dotnet

▲ 0 r/dotnet

Dev dilemma - Windows or Linux for development OS

TL;DR: I/O-heavy .NET API (FFmpeg + Testcontainers + Rider). Already tested Dev Drive and WSL2; both choke memory/speed on a soldered 32GB laptop. Bare-metal Ubuntu runs circles around both. Looking for deep Windows tuning insights or confirmation to stick with native Linux, despite preferring Windows user experience.

Hi all,

I’m developing an API that processes and serves multimedia content to client devices. It’s built on modern .NET (.NET 10, ASP.NET Core, EF Core + Postgres, Hangfire, and FFmpeg for media validation).

I'm currently on a 32GB Windows laptop (AMD Ryzen 8845HS with soldered RAM, so no upgrades possible) using JetBrains Rider. Because the backend involves heavy filesystem I/O, process spawning (FFmpeg), and integration testing with Testcontainers, I've hit some serious performance and memory bottlenecks on Windows.
Here is what I’ve tested so far:
Native Windows 11:
I’ve set up a dev drive and added full Defender exclusions for code/build directories. Filesystem operations and FFmpeg process invocation still feel noticeably sluggish compared to Unix. Tests take quite a while longer because of this

WSL2 (Podman / Remote Dev):
I/O is faster inside the virtual disk, but running Rider via Remote Development / Gateway or crossing the ⁠\\wsl$⁠ boundary consumes massive amounts of RAM and feels laggy. Along with Chrome, Testcontainers, and Rider, it quickly saturates the 32GB ceiling.

Dual-Boot Ubuntu 26.04 (Bare Metal):
Dual-booted on a secondary SSD, and the performance difference is night and day. Native Podman has zero VM memory overhead, test runs are dramatically faster, and it matches our Ubuntu 24.04 production environment 1:1.

Windows still has the edge for general desktop/hardware polish and daily ergonomics though, it plays a lot nicer with my dock and input devices (Logitech MX Keys and MX Master 4) as well as display scaling.

For those running I/O-heavy .NET workloads and containerized tests:

  1. Are there any non-obvious Windows/WSL2 tuning tricks for Testcontainers and high-churn disk I/O that make it truly competitive with bare-metal Linux?
  2. Or is bare-metal Linux (or macOS) simply the pragmatic path once an app is reliant on containers and I/O for testing?

Would love to hear how others balance this on 32GB machines.

reddit.com
u/jafico1 — 1 day ago
▲ 21 r/dotnet+5 crossposts

Hi everyone, I'm creating a tool to learn ASP.NET Core

I've been developing a platform for learning ASP.NET Core Web API in a more practical way for some time now. The idea is to combine guided lessons, code examples, and challenges. At the end of each challenge, you can submit your solution and receive feedback from an AI that evaluates it according to certain criteria, highlighting what you did well and the areas for improvement.

for now, the lessons use YouTube videos as support. Later, I'd like to create my own content, but first I want to validate the idea.

if you're interested, you can go to the landing page and join the waitlist to be notified when it's available. Thanks!

https://net-ascendant.vercel.app/

u/Lucky-Percentage5216 — 2 days ago
▲ 7 r/dotnet

Good video or article about software architecture for dotnet specifically?

Currently, writing my bachelor's thesis on development practices and software architecture, a lot of good general resources, but all the ones for dotnet seem extremely clickbaity or seem to use an illogical structure for the purpose of the application ie clean architecture for a to-do app without ever explaining why.

I am not nearly experienced and well-read enough to go into detail about a specific aspect in my thesis. The topic is intentionally broad, because I want to learn the general picture of mapping out the process of software design and deployment in the real world. I've only dipped my toe nail in this kind of thing during my internship where I worked on a small project using clean architecture and the why's and how's really interested me, so both my mentors(boss and thesis mentor) suggested this topic.

So the general thesis concept would be: "client has X problem, what design principles, architecture, code organization, etc do you choose depending on their requirements"

Also, there might be cultural(?) confusion regarding writing a thesis about something you don't know about, but in my country all university students need to write a thesis to graduate, so the threshold is far lower for our paper's, than other countries(I'm assuming at least), it's very common to just copy/paste documentation from frameworks you used for a personal project and be done with it for a thesis.

reddit.com
u/livyatian — 1 day ago
▲ 19 r/dotnet

Log methods evaluation expensive warning and wrapping with IF

Hi,
I am seeing the warning that `LogInformation` and other log methods evaluation is expensive and should be wrapped in `if` statement.

Why don't those methods do this check internally already? This would help with less code and better code readabilty I think.

Here is the example:

https://preview.redd.it/maffgqy8qakh1.png?width=705&format=png&auto=webp&s=099656d48dc09e4a71e2deec9c61cd419fbcd24f

reddit.com
u/Fragrant-Training722 — 2 days ago
▲ 0 r/dotnet

ASP.NET Core Backend E-commerce Project — Looking for Resources

I’m currently building an e-commerce backend using ASP.NET Core and looking for good resources to help me in the project .

Like I have done a project , a really small one , but it was done using a tutorial video on YouTube. so that's why I need help with resources like a GitHub repo that may help me understand stuff better and build a project on my own .

reddit.com
u/notusefulll — 1 day ago
▲ 11 r/dotnet+1 crossposts

anyone else not trust AI-generated tests? been trying to actually measure if they catch anything

Ok this has been bugging me for a while. I let the AI write tests, everything's green, coverage looks great... and I still don't trust any of it lol. Because the test just asserts whatever the code already does. If there's a bug in there, the test just locks it in and moves on like nothing happened.

Like, 100% coverage means nothing if the assertions are garbage, right? The only thing that actually matters is whether the test fails when the code is wrong. And nobody's sitting there checking that by hand for a wall of generated tests.

So I started messing with mutation testing for this. Basically you break the code on purpose and see if the test notices. Doesn't notice? The test is useless, toss it.

Ended up wrapping it into a little .NET tool. FsCheck for the properties, Stryker.NET does the mutation. The LLM proposes stuff, then it gets filtered pretty hard: anything that fails on working code gets dropped, anything that survives a mutant gets dropped too. You only keep what actually killed something.

Ran it on a real CliWrap commit just so I wasn't fooling myself: 2 proposed, 1 kept (with the mutant it caught), 1 thrown out for killing zero mutants. Honestly the throwing-out part is the whole point, I'd rather it show me nothing than hand me a test that does nothing.

Not gonna pretend it's some genius original thing btw. Meta does this propose-then-refute loop internally and Mutahunter is an open source take on it. Mine just does properties instead of examples, and the LLM never gets to be the judge, all the yes/no stuff is deterministic.

Anyway, mostly just curious: does anyone here actually do this in CI? Or are you all kinda just vibing and hoping the generated tests are fine lol.

reddit.com
u/Fit-Paper696 — 2 days ago
▲ 8 r/dotnet+1 crossposts

A new take on reactive programming: backend signals with GraphQL-ish queries

Just a bit context:

Reactive programming in .NET spans Rx(R3) Observables, AsyncEnumerables, Raw events. I think the most powerful one is Rx, but using it properly on the backend requires a solid grasp of multithreading, async programming, and locking, on top of its own notoriously steep learning curve of operators. Once you've internalized it, though, it's an extremely powerful paradigm.

In angular (so, javascript, single threaded), the complexity of rx has made the angular team move toward signals (at least for common reactive tasks, not as a whole substitute). This choice has been really popular since thinking with signals is easier, and code is still reactive. So i created this library fedeAlterio/SignalsDotnet, to make signals also possible on .NET.

But i wanted to make a step further. Can signals be useful also on BE?

SignalsDotnet 3.2.0 on Backend

I think they are awesome. The main issue in backend scenario is that we are multi-threaded. While signals must operate in a single-threaded world. So my solution has been basically move them into a single threaded island (of course we can have several island), we can have several of these islands, and "single-threaded" here means serialized execution, not literally one dedicated thread per island (more details on that in the README).

Step 1) Declare a class, that would be our island

https://preview.redd.it/l1co1ysxhckh1.png?width=1425&format=png&auto=webp&s=69b7d2fcd1b7dee1fdb285f78aa6b7c28eadc7bc

Everything here will run single threaded (like Wpf), in custom Synchronization Context (so async-await is handled). Dependency injection will worl as well

Step 2) Register that class as a Signal Island, and expose a SSE endpoint to query it

https://preview.redd.it/5co4l438ickh1.png?width=1276&format=png&auto=webp&s=cd1a7210ce04574d39764925e4509ea658e3d136

Step 3) We can now query that island using GraphQL-like syntax. It's just an endpoint.

https://preview.redd.it/cdkwyu1jickh1.png?width=1736&format=png&auto=webp&s=125cea944dfd5eb902c0e2ea147cfbfe7b420901

This turns out to be more powerful than GraphQL subscriptions in a sense, since every signal (property) in the island is already its own subscription, the query is just combining them together.

Step 4) Just set properties, collections, dictionaries, whatever, on the island, and they'll be pushed out through the SSE endpoint. No need to declare a subscription because everything already is a subscription, the query is only there to combine them together.

Note: There are conversion methods from Observables, AsyncEnumerables, AsyncObservables. So we can Expose them in this way too.

Note 2: The ui is completely done with claude code and claude design. Code is a mess, but its a single html file. Since its only for debugging, I didn't want to spend time on that 😂

https://preview.redd.it/4cq7ckjcjckh1.png?width=1363&format=png&auto=webp&s=0349fcb5fdffe7581fa812ce3cb7b017d79ecb02

You can find it here fedeAlterio/SignalsDotnet. There is a playground app as well to get started easily.

u/fedefex1 — 1 day ago
▲ 4 r/dotnet+4 crossposts

Built a small integration toolkit for fun – GateSift

I’ve been building GateSift mostly for fun — a free browser-based toolkit for integration developers.

It includes tools for things like APIM policies, Logic Apps, BizTalk bindings, Service Bus, C# model generation and integration patterns.

Current tools include:

  • APIM Policy Analyzer – makes complex APIM policies easier to understand and review
  • Logic App Analyzer – helps inspect workflow structure and spot potential issues
  • BizTalk Binding Visualizer – turns binding files into a more readable overview (this is really nice for analyzing complex biztalk integrations)
  • Service Bus Topology Visualizer – shows queues, topics, subscriptions and relationships
  • C# Model Generator – generates C# classes from XML, JSON and flat files
  • Integration Pattern Library – quick reference for common integration and messaging patterns (analyzers will also, notice if any of these patterns are in your solution or if they should be added, i think this might be the coolest thing so far).

No account, no installation, and most processing happens locally in the browser.

gatesift.com

Would love feedback or ideas for other useful tools.

u/Chrillelb — 1 day ago
▲ 189 r/dotnet+4 crossposts

I built an open-source tool to transfer large files directly between two PCs over an Ethernet cable with zero config (EtherTransfer)

Hey everyone,

Whenever I needed to move 100GB+ between two laptops or PCs, the usual options were annoying:

- Wi-Fi/SMB sharing is slow and frequently drops on large directory trees.

- Cloud storage takes hours and caps upload speeds.

- USB flash drives require copying everything twice.

- Direct Ethernet cables usually require configuring static IPs, subnet masks, or running a DHCP server.

I built EtherTransfer to make direct LAN transfers as plug-and-play as possible.

How it works:

  1. Connect a standard Ethernet cable between two PCs (no crossover cable needed, modern NICs handle auto-MDIX).

  2. Launch the app on both machines.

  3. They discover each other automatically over link-local IPv4 (169.254.x.x) via UDP broadcasts.

  4. Drag & drop files or entire folders and stream at full link speed (115MB/s on 1GbE, 1GB/s+ on 10GbE).

Key points:

- 100% offline — zero internet, zero cloud servers, zero telemetry.

- Preserves deep directory structures without needing to zip first.

- Cross-platform support for Windows (10/11) and Linux.

- Built with .NET 10 and Avalonia UI.

- MIT Licensed.

GitHub Repo & Downloads: https://github.com/divyviradiya2/ethertransfer

Live Website: https://divyviradiya2.github.io/ethertransfer/

Would love feedback on transfer stability, edge cases, or features you'd like to see added.

u/divyviradiya — 3 days ago
▲ 6 r/dotnet+1 crossposts

I built a small tech workspace/portfolio — looking for honest feedback

Hey everyone 👋

I’ve been working on a personal project called WEBZONEBW.in, and I thought I’d finally share it here and get some real feedback.

Basically, I’m trying to turn it into more than just a normal portfolio. It’s becoming a kind of personal tech workspace where I can bring together my IT/networking experience, web development projects, cybersecurity work, AI experiments, useful tools, and things I’m currently learning or building.

I’ve been adding and changing things as I go, so it’s definitely still a work in progress.

What I’d really like feedback on

If you have a few minutes to look around, I’d be interested to know:

  • Does the site structure make sense?
  • Are the projects explained clearly?
  • Does it feel like an actual technology workspace or just another portfolio?
  • How does it feel on mobile?
  • Is anything confusing or unnecessary?
  • What would you personally add?

🛠️ Explore the services & projects

I’ve also started putting some of the services, technical solutions, tools, and project ideas into the blog, so they’re easier to explore instead of just having everything sitting on one page.

The blog is where I’m planning to explain things in a little more detail — what a service does, who it could be useful for, how the technology works, and some of the projects behind it.

👉 Website: https://webzonebw.in
👉 Blog: https://webzonebw.in/p/blog.html

I’m not really looking for a bunch of “looks great!” comments 😅

Tell me what you think actually needs work.

If you were building this from scratch, what would you change or add?

reddit.com
u/Typical_Rise4768 — 2 days ago
▲ 139 r/dotnet

Which C# 14 feature actually changed how you write code day-to-day?

I've been running .NET 10 in a couple of side projects since the LTS drop. When it launched I assumed that the big C# 14 win for me would be extension members. It's nice but the feature that I actually ended up using the most is turned out to be the boring one: the field keyword.

Every time I needed a little validation in a property, I used to write the full backing-field:

Before (C# 13):

private string _name;
public string Name
{
    get => _name;
    set => _name = value?.Trim()
        ?? throw new ArgumentNullException(nameof(value));
}

After (C# 14):

public string Name
{
    get;
    set => field = value?.Trim()
        ?? throw new ArgumentNullException(nameof(value));
}

No hand-declared _name. Tiny change, but it shows up multiple places, which is exactly why it wins.

The other one which impressed the most is the file-based apps which quietly replaced half of my throwaway scripts:

Before:

mkdir tool && cd tool
dotnet new console
// edit Program.cs + csproj, then:
dotnet run

After:

// tool.cs — no project, no folder
Console.WriteLine("Just run me.");

dotnet run tool.cs

Type-safe code with the full BCL and zero .csproj turned out to be more useful than I expected.

So I'm curious where everyone actually landed:

  • Which C# 14 feature earned a permanent spot in your muscle memory, and which turned out to be a demo-only feature?
  • Anyone using extension members from C# 14 in real code yet, or still letting it settle?
  • And for the folks still on .NET 8 what's holding up the jump to 10?
reddit.com
u/devensawant1 — 4 days ago
▲ 9 r/dotnet+2 crossposts

Java+spring boot or .Net

I have been thing what should I choose for backend as i want to become a full stack engineer. I just completed js and React in frontend . I am confused between java+spring boot or .Net . I will learn python as well .

What's your opinion ? What will be better option for me ?

reddit.com
u/layla4030 — 3 days ago
▲ 336 r/dotnet

Was shocked to find out Jeff Fritz, was latest long term MSFT employee to be let go.

Microsoft is really shooting itself in the foot with a lot of the really high-profile people, like Jeff Fritz. I watch Jeff’s Twitch streams all the time, and it’s always great content.

I’m even hearing less and less from the two Scotts online. Scott Hanselman still has his podcast, for sure, but the only really high-profile .NET guy we seem to see now is Dan Roth, especially within the Blazor community.
I see James has jumped teams again, now doing Visual Studio Code material on YouTube and TikTok.

I get that employees move teams and new, talented people join. It’s just sad nonetheless. We never hear from Maddy anymore, and .NET and .NET Conf have had very poor-quality content over the last few years.

reddit.com
u/SeleniumDrive77 — 4 days ago
▲ 12 r/dotnet

How to you handle OAuth in your dotnet integration tests?

Title.

Do you mock out that OAuth handling? Or do you actually use one of the test Auth servers. If so, does your resource server have its own client credentials just for running integration tests?

reddit.com
u/Legitimate-School-59 — 4 days ago
▲ 0 r/dotnet

Is there ANY benefit to CSharpier other than "stopping code style wars"?

I am new to a team that have selected CSharpier and I do not like it at all. Not because it is a style that I do not use but that is tooooo rigid. You cant customise it.
And this makes developers stop caring about how they write code. It's too much trouble to format code differently when it is needed, and it's too easy to forget to add csharpier-ignore.

Writing code is art, you need to manage code like a painting and everything needs to fit together.

This is a lot harder with a rigid formater.

I don't even need to say that the code in this new team is... how do I put it? Not good.

reddit.com
u/gosh — 4 days ago
▲ 14 r/dotnet+1 crossposts

Opinions on Microsoft Agent Framework?

.NET shop looking to add some agentic workflows and chat interfaces to platform, currently researching framework options so we don’t have to build the thing from scratch.

Being a .NET shop MAF has come up. Hooked it up to GitHub CoPilot and took it for a quick spin, wasn’t too verbose and conceptually maps to tools like OpenCode pretty well.

Saw some posts on here about it a while ago but things seem to be moving really fast in this space. Looking for opinions on the viability of this framework? I see it had a 1.0 launch in April, it’s meant to supersede both Semantic Kernel and AutoGen.

Are the team behind it any good / trustworthy?

How likely is it to remain supported?

Has there been much community participation / extension?

How does it compare to similar frameworks in other languages, LangChain/Graph being an obvious one?

Is it good enough to prevent you from hopping languages or is python where it’s really at?

Any useful information is guaranteed at least one updoot, thanks in advance!

reddit.com
u/LikeASomeBoooodie — 4 days ago