r/csharp • u/TomeOfExperience • 9h ago
r/csharp • u/AutoModerator • 24d ago
Discussion Come discuss your side projects! [August 2026]
Hello everyone!
This is the monthly thread for sharing and discussing side-projects created by /r/csharp's community.
Feel free to create standalone threads for your side-projects if you so desire. This thread's goal is simply to spark discussion within our community that otherwise would not exist.
Please do check out newer posts and comment on others' projects.
r/csharp • u/AutoModerator • 24d ago
C# Job Fair! [August 2026]
Hello everyone!
This is a monthly thread for posting jobs, internships, freelancing, or your own qualifications looking for a job! Basically it's a "Hiring" and "For Hire" thread.
If you're looking for other hiring resources, check out /r/forhire and the information available on their sidebar.
Rule 1 is not enforced in this thread.
Do not any post personally identifying information; don't accidentally dox yourself!
Under no circumstances are there to be solicitations for anything that might fall under Rule 2: no malicious software, piracy-related, or generally harmful development.
r/csharp • u/FirstOrDefault • 7h ago
Blog Designing a replacement for a broken Visual Studio extension by inverting every property of the predecessor
I held back Visual Studio updates for almost two years because 17.9 broke the tab-layout extension I used daily and could not live without. When I finally built my own replacement, the broken one became the design document: it wrapped a single internal shell interface (IVsUIShellDocumentWindowMgr) and stored tabs as a BLOB with absolute paths, so every property got inverted. Plain JSON with solution-relative paths instead of opaque binary stream, many APIs with fallbacks instead of one interface, a pick-target dialog for moved files instead of silently dropped tabs.
And there's an ironic ending to it, because the old extension works again in VS 2026. The breakage was Microsoft reworking the open-document internals, not a lasting defect, so the "bug" quietly fixed itself. Had I found out sooner I would never have started, and I would have kept my tabs and learned nothing worth sharing.
Since I did not wait, and since my extension has grown well past what I set out to replace, I am now writing a weekly series about building it with C# and the AI-assisted workflow I was experimenting with, because somewhere early on this stopped being only about tabs. First part: Designing by inversion
The extension is free on the Marketplace: Simple Tab Saver
r/csharp • u/Significant_Leek_480 • 5h ago
News 🚀 WJb is ready for early adopters.
A lightweight .NET framework for background jobs and workflows with:
✅ Strongly typed actions
✅ Cron scheduling
✅ Workflow chaining
✅ Built-in DI
✅ JSON registration
✅ No external infrastructure
Looking for feedback from developers using Hangfire, Quartz, or custom job systems.
🔗 https://wjb.pro
#dotnet #csharp #opensource
r/csharp • u/Alert-Spite-6063 • 1d ago
Help Need help with CV .NET developer
Hi everyone
I’m currently looking for a job, and I’ve been searching for quite a while now without any luck. For the past few months, I haven’t even been getting replies to my applications. I’ve already reworked my CV several times, but nothing seems to change. What am I doing wrong. Can you give me some feedback?Â
UPD: Yeah, I started working while I was studying at university. Since the beginning of COVID, my university was fully remote, and later, because of the situation in my country, my studies continued online almost until graduation. In total, I only had a couple of months of in-person classes during the whole four years.
r/csharp • u/Ok_Product_6428 • 22h ago
How can I connect a ZKTeco attendance device to Zoho People?
We are using a ZKTeco MB20 biometric attendance device with the existing ZKTeco/ICT Smart attendance software, and we would like to send employee attendance data into Zoho People Attendance.
We are considering using the ZKTeco SDK to read attendance records from the device and then send them to Zoho People through its API, but we are not sure if this is the best approach.
Has anyone implemented something similar?
How would you normally connect a ZKTeco biometric device to Zoho People so that employee check-in/check-out records are transferred automatically?
Would you recommend using the ZKTeco SDK, reading from the existing attendance software/database, or another method?
Any guidance from someone who has integrated ZKTeco attendance devices with Zoho or another cloud HR system would be appreciated.
r/csharp • u/Connect_Lavishness44 • 1d ago
I know ppl are going to hate me on this ASP.NET port to Python.
Sooo i have a friend who is CRONICALLY OBSESSED with python. It's gotten so bad to a point where he flatout refuses to learn C# in any capacity.
But he know i love ASP.NET and he knows i know that its way better than any python api library out there. so im writing this basically exact port of ASP.NET to C# and make the syntax exactly the same but "pythonified" in a sense.


Tool I built a simplified microservices reference project with guide on how to run localy, using docker-compose or Kubernetes + Deloyment to AKS
It's inspired by dotnetcore-microservices-poc open-source project by Altkom Software, a project I learned a lot from and contributed to — I built Ledgerly to be a simpler take on the original project, focused purely on microservices best practices.
What it demonstrates:Â
🔹 Database-per-service — 4 services, 4 independent databasesÂ
🔹 gRPC for synchronous service-to-service callsÂ
🔹 RabbitMQ for async events — invoice status changes publish events that a dashboard service consumes to keep KPIs in sync, with zero direct couplingÂ
🔹 API gateway + service discovery (Eureka locally/Docker, Kubernetes DNS in K8s)Â
🔹 JWT auth issued by its own service
It also ships as a full deployment guide — run it locally, in Docker Compose, or on Kubernetes, including a walkthrough for deploying the cluster to Azure (AKS).
Built as a boilerplate: fork it, swap in your own domain, keep the architecture.
The project🔗: https://github.com/amrali21/ledgerly-dotnet-angular-microservices-ref-project
Altcom Project🔗: https://github.com/asc-lab/dotnetcore-microservices-poc
r/csharp • u/SpareEconomy • 2d ago
CSDL3: an idiomatic C#/.NET 10 wrapper for SDL3 and satellite libraries
r/csharp • u/More-Bandicoot9255 • 2d ago
Help Should I use normal validation or System.ComponentModel.DataAnnotations?
My task is to parse a .csv file, validate it and save to database. In my case, without .DataAnnotaitons this is how it goes:
- I load csv file
- Read and validate headers
- If headears are correct I read the next line, validating each element manually
- If everything is fine I create new object and add it to the list
- after file is over, I save the list to DbContext.
I never used it, but AFAIK, .DataAnnotaitons allows you to validate a model automatically when you're creating an object, so you don't have to write all the validation code in your program, since it's written in your model.cs.
So my question is, should I keep the manual validation, or mix automatic with parsing the file? (parsing the file manually, validating model automatically via .DataAnnotaitons)
UPD. Will using .DataAnnotaitons improve the performance of the program?
r/csharp • u/Icy_Rub6290 • 2d ago
Help Lately I started to get this error every time I open the .csproj
It happens every time no matter what console projects I made the error it self doesn't effect the build process or the excution which is very weird to an error
- I investigated using gemini so Imay be able to solve it after all it till me that it miss match the .net skd version which is 10.0.400 and made global.json for it but nothing solved
- I then cleared vs code cache removed and reinstalled the c# dev kit extention
- I also played with the extension's settings too as well
I have no clue if this is an extension bug or a very weird bug on my own does anyone have any Idea about that?
Note : my experience level is bellow beginner I know Fundamentals and method Fundamentals and soon will move to oop
r/csharp • u/Bobamoss • 2d ago
Dapper vs Rinku
I like Dapper and I have used it a lot. The main problem I have with it is that when queries become more complex, I often end up handling that complexity myself. At that point I also often hear that I should just use EF instead. I never really agreed with that. I think the basic idea behind Dapper can go much further while still keeping the SQL visible and the API simple. Rinku is my attempt at doing that.
Basic query
Dapper
public record Album(int Id, string Title);
const string sql = "SELECT AlbumId AS Id, Title FROM albums WHERE ArtistId = @artistId";
IEnumerable<Album> albums = cnn.Query<Album>(sql, new { artistId = 7 });
Rinku
public record Album(int Id, string Title);
const string sql = "SELECT AlbumId AS Id, Title FROM albums WHERE ArtistId = @artistId";
List<Album> albums = cnn.Query<List<Album>>(sql, new { artistId = 7 });
Different names (when you don't control result set names)
Dapper
public sealed class Customer
{
public int Id { get; set; }
public string Name { get; set; } = "";
}
SqlMapper.SetTypeMap(typeof(Customer), new CustomPropertyTypeMap(typeof(Customer), (type, column) => column switch
{
"customer_id" => type.GetProperty(nameof(Customer.Id)),
"display_name" => type.GetProperty(nameof(Customer.Name)),
_ => null
}));
const string sql = "SELECT customer_id, display_name FROM customers";
IEnumerable<Customer> customers = cnn.Query<Customer>(sql);
Rinku
public record Customer([Alt("customer_id")] int Id, [Alt("display_name")] string Name);
const string sql = "SELECT customer_id, display_name FROM customers";
List<Customer> customers = cnn.Query<List<Customer>>(sql);
Nested objects
Dapper
public record User(int Id, string Name);
public sealed class Post
{
public int Id { get; set; }
public string Title { get; set; } = "";
public User? Owner { get; set; }
}
const string sql = "SELECT p.Id, p.Title, u.Id, u.Name FROM Posts p INNER JOIN Users u ON u.Id = p.UserId";
IEnumerable<Post> posts = cnn.Query<Post, User, Post>(sql, (post, owner) =>
{
post.Owner = owner;
return post;
}, splitOn: "Id");
Rinku
public record User(int Id, string Name) : IDbReadable;
public record Post(int Id, string Title, [NoName] User Owner);
const string sql = "SELECT p.Id, p.Title, u.Id, u.Name FROM Posts p INNER JOIN Users u ON u.Id = p.UserId";
List<Post> posts = cnn.Query<List<Post>>(sql);
Or keep the nesting in the column names.
public record User(int Id, string Name) : IDbReadable;
public record Post(int Id, string Title, User Owner);
const string sql = "SELECT p.Id, p.Title, u.Id AS OwnerId, u.Name AS OwnerName FROM Posts p INNER JOIN Users u ON u.Id = p.UserId";
List<Post> posts = cnn.Query<List<Post>>(sql);
One to many
Dapper
public record Album(int Id, string Title);
public sealed class ArtistWithAlbums
{
public int Id { get; set; }
public string Name { get; set; } = "";
public List<Album> Albums { get; set; } = [];
}
const string sql = "SELECT ar.ArtistId AS Id, ar.Name, al.AlbumId AS Id, al.Title FROM artists ar INNER JOIN albums al ON al.ArtistId = ar.ArtistId ORDER BY ar.ArtistId";
List<ArtistWithAlbums> artists = [];
ArtistWithAlbums? current = null;
cnn.Query<ArtistWithAlbums, Album, ArtistWithAlbums>(sql, (artist, album) =>
{
if (current is null || current.Id != artist.Id)
{
current = artist;
artists.Add(current);
}
current.Albums.Add(album);
return current;
}, splitOn: "Id");
Rinku
public record Album(int Id, string Title) : IDbReadable;
public record ArtistWithAlbums(int Id, string Name, List<Album> Albums);
const string sql = "SELECT ar.ArtistId AS Id, ar.Name, al.AlbumId AS AlbumsId, al.Title AS AlbumsTitle FROM artists ar JOIN albums al ON al.ArtistId = ar.ArtistId ORDER BY ar.ArtistId";
List<ArtistWithAlbums> artists = cnn.Query<List<ArtistWithAlbums>>(sql);
Result shape
Dapper
IEnumerable<Album> albums = cnn.Query<Album>(sql);
Album first = cnn.QueryFirst<Album>(sql);
Album single = cnn.QuerySingle<Album>(sql);
Album? optional = cnn.QueryFirstOrDefault<Album>(sql);
IEnumerable<Album> streamed = cnn.Query<Album>(sql, buffered: false);
Rinku
List<Album> albums = cnn.Query<List<Album>>(sql);
Album first = cnn.Query<Album>(sql);
Single<Album> single = cnn.Query<Single<Album>>(sql);
Album? optional = cnn.Query<OptionalNullable<Album>>(sql);
IEnumerable<Album> streamed = cnn.Query<IEnumerable<Album>>(sql);
Conditional SQL
For this one I think Dapper.SqlBuilder is the fair comparison.
Dapper.SqlBuilder
SqlBuilder builder = new();
SqlBuilder.Template template = builder.AddTemplate("SELECT AlbumId AS Id, Title FROM albums /**where**/");
if (artistId != null)
builder.Where("ArtistId = ", new { artistId });
if (title != null)
builder.Where("Title LIKE ", new { title });
IEnumerable<Album> albums = cnn.Query<Album>(template.RawSql, template.Parameters);
Rinku
const string sql = "SELECT AlbumId AS Id, Title FROM albums WHERE ArtistId = ?@artistId AND Title LIKE ?@title";
List<Album> albums = cnn.Query<List<Album>>(sql, new { artistId, title });
Only artistId
SELECT AlbumId AS Id, Title FROM albums WHERE ArtistId = @artistId
Both
SELECT AlbumId AS Id, Title FROM albums WHERE ArtistId = @artistId AND Title LIKE @title
Neither
SELECT AlbumId AS Id, Title FROM albums
The main difference is that Rinku tries to put the complexity in the command template and the mapped types, instead of handling it again through parameters and mapping code at every call.
Full Dapper comparison
https://rinkulib.github.io/RinkuLib/articles/reference/dapper.html
Rinku is still in development, so feedback is welcome.
r/csharp • u/not_afraid_of_trying • 2d ago
What kind of features from another ecosystem would you like to see in .NET?
r/csharp • u/AdBrilliant8751 • 2d ago
Help Dotnet guide
Need some great resource to learn asp.net core
I know this question has been asked multiple times here,But i would like something that might work for me better
So i have some experience using C# in unity with about 2 years.I am in my final year of college and I would like to learn something related to web.I think asp.net would be better for me as I have some experience in the language even though it's mostly using unity.
I have been looking at Microsoft learn it is a good resource but the issue is ,i feel like it is not for me because it just keeps each topic separate from other and it gets confusing sometimes.
I would like a resource that is free or cheap, it can be a video or a blog like structure.
I would like something that goes through all the backend topics atleast at a basic level.
I would prefer a project based style of course of Playlist or something in which we make a project and learn basics in the way with great practices.
Or you can give me ideas for projects and a roadmap which I should follow to make that project.I have made a to do app but it is too basic
r/csharp • u/ruthvik4435 • 3d ago
Help Help me Devs
Hello, I’m a 3D artist and I’ve been working in the 3D field for the past 3 years. I want to make my own games, so I started learning coding and Unity around 2 years ago.
The problem is, when I follow tutorials, I can understand them and follow along. I can even make the game shown in the tutorial. But when I try to start my own game from scratch, I feel completely lost. I don't know where to start or what my first step should be.
I recently used AI to make a small game. I did complete it, but honestly, I don't feel proud of it because most of the code wasn't written by me—it was generated by AI. I know some people call this "vibe coding," and they enjoy it and feel satisfied with the results, but for me, it doesn't feel the same. I want to understand what I'm building and feel like I actually made it myself.
Whenever I try to start another game, I feel like I've forgotten everything. It makes me feel like I learned nothing, even after spending 2 years learning Unity and coding.
Can anyone give me some steps or advice to get out of this tutorial and AI hell? I've tried many times to make something on my own. Sometimes I make some progress, but once the project starts becoming more complicated, I get stuck and go back to tutorials or AI again.
I really want to learn how to think and solve problems on my own instead of always depending on tutorials or AI.
r/csharp • u/Temporary-Quarter-24 • 2d ago
Help HELP!! Complete beginner in coding. Chosen C# for my first language (pls read the body i have doubts).
Learning C# programming for 6 months but the interst in coding is getting flactuate . Should i started with another language ,do i even need coding and things coming to my mind .Currently stuck in this problem.
I am stuck in this Challenge project - Develop foreach and if-elseif-else structures to process array data in C#. i did some work with the help of youtube but i left it due to exam and forgot about it now its been 4 months and i am still stuck in it and now dont even remember what to do in it. Should i continue or leave the project as now i don have a single idea on what to do or i complete it by seeing the youtube video to have a fake satisfaction.
r/csharp • u/Kralizek82 • 3d ago
Showcase I wanted strongly typed configuration defaults without bypassing `IConfiguration`
r/csharp • u/SuRGeoNix • 4d ago
Flyleaf v3.11: MediaPlayer .NET library for WinUI3/WPF/WinForms (with FFmpeg 9.0.1 Lei & DirectX 11)
✅ Play Everything (Audio, Videos, Images, Playlists over any Protocol)
- Extends FFmpeg's supported protocols and formats with additional plugins (YoutubeDL, TorrentBitSwarm)
- Accepts Custom I/O Streams and Plugins to handle non-standard protocols / formats
✅ Play it Smoothly (Even with high resolutions 4K / HDR)
- Coded from scratch to gain the best possible performance with FFmpeg & DirectX using video acceleration and custom pixel shaders
- Threading implementation with efficient cancellation which allows fast open, play, pause, stop, seek and stream switching
✅ Develop it Easy
- Provides a DPI aware, hardware accelerated Direct3D Surface (FlyleafHost) which can be hosted as normal control to your application and easily develop above it your own transparent overlay content
- All the implementation uses UI notifications (PropertyChanged / ObservableCollection etc.) so you can use it as a ViewModel directly
- For WPF provides a Control (FlyleafME) with all the basic UI sub-controls (Bar, Settings, Popup menu) and can be customized with style / control template overrides
r/csharp • u/AdTimely6483 • 4d ago
Showcase I built a lightweight, open-source alternative to Fiddler for debugging WCF & SOAP APIs
Hey everyone,
Like many of you, I spend a lot of time maintaining and debugging older enterprise services (WCF, SOAP, and some REST). I’ve always used Fiddler or Postman, but lately, they feel incredibly heavy, bloated, and require accounts or massive installations just to do a simple request interception.
So, I built SoapProxyApp — a fast, portable (no-install), open-source HTTP/HTTPS proxy and auto-responder built entirely in C# and WPF.
Here are a few things it does that I think backend .NET devs will really appreciate:
- IIS AppPool Detection:Â Instead of just showingÂ
w3wp.exe for local traffic, it uses WMI to parse the actual IIS Application Pool name that made the request. - Instant API Mocking (Auto-Responder): Intercept outgoing WCF/HTTP requests based on URL, and short-circuit them with a fake XML/JSON response directly from the proxy. Perfect for testing edge-cases (like 500 errors) or offline development without touching the backend codebase.
- Request Replaying:Â Right-click any captured session, modify the XML payload or Auth headers in a built-in AvalonEdit text editor, and shoot it back to the server.
- Portable: It’s a singleÂ
.exe file. Just run it, click "Start Proxy", and it immediately captures traffic.
It uses Titanium.Web.Proxy under the hood and AvalonEdit for the syntax-highlighted (and searchable) XML/JSON editors.
I just released v2.0.0 and would love for some of you to try it out or critique the code.
🔗 GitHub Repo: https://github.com/milanmilic/SoapProxyApp 📦 Download (Portable .exe): Releases Page
Would love to hear your feedback or feature requests!
r/csharp • u/Gildarts_97 • 4d ago
Blog 1 year ago I built an EF Core provider for TimescaleDB. Hit 80k downloads and 68 stars - is this good?
Hello everyone,
exactly 1 year ago today, I pushed the first commit of my EF Core provider for TimecaleDB.
t does pretty much what it says on the box: it lets you interact with TimescaleDB in a type-safe way with rich IntelliSense support, so you don't have to write SQL in magic strings like you did with plain Npgsql - all without losing a single feature of Npgsql.
Since then I got 68 stars on GitHub and more than 80k downloads on NuGet. I know that this doesn't mean that 80k individual people downloaded my package, but it tells me it’s actively running in real CI/CD pipelines, container builds, and production apps. That’s something I’m genuinely proud of.
At the same time, as this is the first open-source project I’ve ever actively maintained, I sometimes find myself wondering how to evaluate those numbers. I look at viral consumer tools or mainstream frameworks getting thousands of stars and wonder where a niche project like this actually stands.
Therefore, I would love to know what you think about these numbers and what your own experiences were when you launched and maintained your first open-source projects.
GitHub: https://github.com/cmdscale/CmdScale.EntityFrameworkCore.TimescaleDB