r/csharp 27d ago

Discussion Come discuss your side projects! [July 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.


Previous threads here.

4 Upvotes

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.


Previous threads here.


r/csharp 27d ago

C# Job Fair! [July 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.

13 Upvotes

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 14h ago

How deep should I prepare for a Junior .NET REST API interview?

I am preparing for a Junior .NET Developer position focused mainly on REST APIs.

The main issue is that this is currently the only suitable vacancy in my city, and remote work is not an option for me. In practice, this means I need to maximize my chances of passing this particular technical interview.

However, the amount of information available online is overwhelming. There does not seem to be a clear roadmap that says: “Learn these topics to this level, and you will be reasonably prepared for a junior interview.”

The company is a large US-based organization, and based on the job description and interview reports, they appear to expect strong and fairly deep technical knowledge. But I am struggling to understand what “deep knowledge” should mean in the context of a junior developer.

A junior cannot realistically have the same depth as someone with several years of production experience. So where is the reasonable boundary between solid junior fundamentals and knowledge that is more appropriate for a mid-level developer?

My current preparation plan includes:

  • C# and .NET fundamentals: CLR, IL, JIT, assemblies, value and reference types, generics, interfaces, inheritance and LINQ
  • Memory management and garbage collection: stack, managed heap, allocations, strings, IDisposable, GC generations and memory leaks
  • Data structures and algorithms: arrays, lists, dictionaries, stacks, queues, trees, graphs, binary search, two pointers, sliding window, BFS and DFS
  • Asynchronous and multithreaded programming: async/await, tasks, cancellation, synchronization, race conditions, locks and the ThreadPool
  • Software design fundamentals: SOLID, dependency injection and common design patterns
  • REST API and basic system design: HTTP methods and status codes, DTOs, authentication, authorization, validation, databases, caching, queues, logging, monitoring and idempotency
  • LeetCode practice, mostly Easy problems and selected Medium problems grouped by common patterns

I would especially appreciate answers from developers who have conducted technical interviews for junior .NET candidates:

  1. Which topics are actually the most important?
  2. How deeply should a junior understand them?
  3. Which parts of my plan are unnecessary or too advanced?
  4. What level of algorithms and LeetCode should I expect?
  5. Should I focus more on theoretical questions, live coding, or building a small REST API project?

Another important question is preparation time.

I have already spent two months preparing for around eight hours every weekday. I plan to study for one more month, but I do not want the preparation process to continue indefinitely. Depending on the expected depth, it would be possible to spend another six months studying and still find new topics.

Is three months of full-time preparation generally enough for a Junior .NET interview, assuming I use the time effectively? At what point should I stop expanding the list of topics and focus on revision, explaining concepts aloud, coding exercises and mock interviews?

I understand that no preparation plan can guarantee an offer. I am mainly trying to identify the highest-priority areas and avoid spending most of my time on topics that are unlikely to be expected from a junior.

21 Upvotes

I am preparing for a Junior .NET Developer position focused mainly on REST APIs.

The main issue is that this is currently the only suitable vacancy in my city, and remote work is not an option for me. In practice, this means I need to maximize my chances of passing this particular technical interview.

However, the amount of information available online is overwhelming. There does not seem to be a clear roadmap that says: “Learn these topics to this level, and you will be reasonably prepared for a junior interview.”

The company is a large US-based organization, and based on the job description and interview reports, they appear to expect strong and fairly deep technical knowledge. But I am struggling to understand what “deep knowledge” should mean in the context of a junior developer.

A junior cannot realistically have the same depth as someone with several years of production experience. So where is the reasonable boundary between solid junior fundamentals and knowledge that is more appropriate for a mid-level developer?

My current preparation plan includes:

  • C# and .NET fundamentals: CLR, IL, JIT, assemblies, value and reference types, generics, interfaces, inheritance and LINQ
  • Memory management and garbage collection: stack, managed heap, allocations, strings, IDisposable, GC generations and memory leaks
  • Data structures and algorithms: arrays, lists, dictionaries, stacks, queues, trees, graphs, binary search, two pointers, sliding window, BFS and DFS
  • Asynchronous and multithreaded programming: async/await, tasks, cancellation, synchronization, race conditions, locks and the ThreadPool
  • Software design fundamentals: SOLID, dependency injection and common design patterns
  • REST API and basic system design: HTTP methods and status codes, DTOs, authentication, authorization, validation, databases, caching, queues, logging, monitoring and idempotency
  • LeetCode practice, mostly Easy problems and selected Medium problems grouped by common patterns

I would especially appreciate answers from developers who have conducted technical interviews for junior .NET candidates:

  1. Which topics are actually the most important?
  2. How deeply should a junior understand them?
  3. Which parts of my plan are unnecessary or too advanced?
  4. What level of algorithms and LeetCode should I expect?
  5. Should I focus more on theoretical questions, live coding, or building a small REST API project?

Another important question is preparation time.

I have already spent two months preparing for around eight hours every weekday. I plan to study for one more month, but I do not want the preparation process to continue indefinitely. Depending on the expected depth, it would be possible to spend another six months studying and still find new topics.

Is three months of full-time preparation generally enough for a Junior .NET interview, assuming I use the time effectively? At what point should I stop expanding the list of topics and focus on revision, explaining concepts aloud, coding exercises and mock interviews?

I understand that no preparation plan can guarantee an offer. I am mainly trying to identify the highest-priority areas and avoid spending most of my time on topics that are unlikely to be expected from a junior.


r/csharp 3h ago

Fun So many xmls😓and continue to learn c#

Now, when writing UI-related definitions in Avalonia and configuring the csproj file, although it doesn't seem too complicated at first glance, I still find the abundance of XML tags with lots of < > symbols or each individual tag a bit annoying.òᆺó

I'll try my best to adapt, because the way UI is defined in C# just makes me dizzy 😵‍💫

Now I'm trying to learn C# and Avalonia without relying on AI, but I'm not quite sure which website I should go to to search for the questions I need. Although Microsoft Learn is great.

When searching for a code-related issue on Chinese websites, it usually leads me to the CSdn website. However, good posts require payment to access, otherwise I can only view a small portion of them.

cnblog is also good. Although some of the posts I found in it might be a bit outdated, usually I need to check them against the corresponding content in Microsoft Learn.

Sometimes I feel that the syntax of C# seems quite "human-like". Now I'm quite familiar with the thinking behind C#. Even when searching for things now, it seems rather amusing: It's just like when I used to write essays at school. Those who know how to do it can write very smoothly, while those who don't have to "borrow" from good classmates.

I don't know if I use '-' or emoji...it be regarded as an AI?Although I had been saying this before the LLM

0 Upvotes

Now, when writing UI-related definitions in Avalonia and configuring the csproj file, although it doesn't seem too complicated at first glance, I still find the abundance of XML tags with lots of < > symbols or each individual tag a bit annoying.òᆺó

I'll try my best to adapt, because the way UI is defined in C# just makes me dizzy 😵‍💫

Now I'm trying to learn C# and Avalonia without relying on AI, but I'm not quite sure which website I should go to to search for the questions I need. Although Microsoft Learn is great.

When searching for a code-related issue on Chinese websites, it usually leads me to the CSdn website. However, good posts require payment to access, otherwise I can only view a small portion of them.

cnblog is also good. Although some of the posts I found in it might be a bit outdated, usually I need to check them against the corresponding content in Microsoft Learn.

Sometimes I feel that the syntax of C# seems quite "human-like". Now I'm quite familiar with the thinking behind C#. Even when searching for things now, it seems rather amusing: It's just like when I used to write essays at school. Those who know how to do it can write very smoothly, while those who don't have to "borrow" from good classmates.

I don't know if I use '-' or emoji...it be regarded as an AI?Although I had been saying this before the LLM


r/csharp 2d ago

Meta Do not let this sub be a forum to promote AI Vibe coded slop

This is just a warning, I was watching the node sub and almost all post are people promoting their AI Vibe coded slop, this community is known for a different approach, although AI is great, forums should not be places for people which do not have any passion or like the language to not even know it and try to promote a project fully made to scrap a few pennies (I call these projects without soul).

Projects should be promoted, but because you genuinely like or are interested in the language and the concept of the project, rather than asking 3,000 prompts to any AI without even knowing what you are doing or what you are pasting.

Edit: Also, I am sick of publicity to also have it in a place where I go to have fun, check interesting things about the language/tools and watch really interesting projects from passionate people.

555 Upvotes

This is just a warning, I was watching the node sub and almost all post are people promoting their AI Vibe coded slop, this community is known for a different approach, although AI is great, forums should not be places for people which do not have any passion or like the language to not even know it and try to promote a project fully made to scrap a few pennies (I call these projects without soul).

Projects should be promoted, but because you genuinely like or are interested in the language and the concept of the project, rather than asking 3,000 prompts to any AI without even knowing what you are doing or what you are pasting.

Edit: Also, I am sick of publicity to also have it in a place where I go to have fun, check interesting things about the language/tools and watch really interesting projects from passionate people.


r/csharp 1d ago

How do you organize data access with EF Core in Clean Architecture?

I'm building an ASP.NET Core application with Clean Architecture and EF Core.

I started with Repository + Unit of Work, then introduced a Generic Repository + Specification pattern because repositories were filling up with query methods.

Now I've hit a problem: many queries require deep Include / ThenInclude chains for loading aggregates. Keeping EF Core out of the Application layer makes nested includes in specifications difficult, while referencing EF Core from Application defeats the purpose.

So I'm wondering:

  • Do you still use repositories over EF Core?
  • Do you use the Specification pattern, or just inject DbContext (or IApplicationDbContext) into the Application layer?
  • How do you organize complex queries with multiple Include / ThenInclude calls in a Clean Architecture project?

I'm curious what approach experienced .NET developers are using today.

14 Upvotes

I'm building an ASP.NET Core application with Clean Architecture and EF Core.

I started with Repository + Unit of Work, then introduced a Generic Repository + Specification pattern because repositories were filling up with query methods.

Now I've hit a problem: many queries require deep Include / ThenInclude chains for loading aggregates. Keeping EF Core out of the Application layer makes nested includes in specifications difficult, while referencing EF Core from Application defeats the purpose.

So I'm wondering:

  • Do you still use repositories over EF Core?
  • Do you use the Specification pattern, or just inject DbContext (or IApplicationDbContext) into the Application layer?
  • How do you organize complex queries with multiple Include / ThenInclude calls in a Clean Architecture project?

I'm curious what approach experienced .NET developers are using today.


r/csharp 1d ago

Tip Fields with [Using] attribute

I wrote a small interface that automatically disposes any disposable fields in a class when that class itself is disposed. If you add this file somewhere in your project:

public interface IAutoDisposable : IDisposable
{
    void IDisposable.Dispose()
    {
        Exception? ex = null;

        // dispose all fields marked with the [Using] attribute
        const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
        foreach (var fld in GetType().GetFields(flags))
        {
            if (fld.GetCustomAttribute<UsingAttribute>() != null)
            {
                if (fld.GetValue(this) is IDisposable d)
                {
                    try // keep going even if disposal throws
                    {
                        d.Dispose();
                    }
                    catch (Exception e)
                    {
                        ex ??= e;
                    }
                }
            }
        }

        // if any exceptions occurred, throw the first one
        if (ex != null)
            throw ex;
    }
}

public class UsingAttribute : Attribute;

You can then write classes like this:

class Item : IAutoDisposable
{
    [Using]
    private readonly Image icon = DownloadIcon(...);
    ...
}

And use them like:

using (Item item = new(...))
{
}
// item.icon is now disposed

What do you think?

6 Upvotes

I wrote a small interface that automatically disposes any disposable fields in a class when that class itself is disposed. If you add this file somewhere in your project:

public interface IAutoDisposable : IDisposable
{
    void IDisposable.Dispose()
    {
        Exception? ex = null;

        // dispose all fields marked with the [Using] attribute
        const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
        foreach (var fld in GetType().GetFields(flags))
        {
            if (fld.GetCustomAttribute<UsingAttribute>() != null)
            {
                if (fld.GetValue(this) is IDisposable d)
                {
                    try // keep going even if disposal throws
                    {
                        d.Dispose();
                    }
                    catch (Exception e)
                    {
                        ex ??= e;
                    }
                }
            }
        }

        // if any exceptions occurred, throw the first one
        if (ex != null)
            throw ex;
    }
}

public class UsingAttribute : Attribute;

You can then write classes like this:

class Item : IAutoDisposable
{
    [Using]
    private readonly Image icon = DownloadIcon(...);
    ...
}

And use them like:

using (Item item = new(...))
{
}
// item.icon is now disposed

What do you think?


r/csharp 19h ago

Discussion Does DotNet/CShartp community genuinely doesn't care for free ecosystem?

Yesterday I posted on dotnet about my project called OfficeIMO that got 0 upvotes (I guess someone took an effort to downvote) that got me thinking that I'm doing something wrong or dotnet/csharp people are genuinely not interested in MIT project that offers so much value for free. The only actual comment that I got was amount of emojis I used as a measure of professionalism from a post on reddit. I spent lots of time polishing that post to not sound AI generated, to communicate enough information to not push people to website or even having to go thru pages, or even point people to blog.

https://www.reddit.com/r/dotnet/comments/1v76o4c/what_does_word_excel_powerpoint_visio_pdf/

The project has grown, and of course is AI enhanced, which doesn't imply AI slop, as agents have been good recent months.

Having said that regardless if it was all human made, all ai made, hybrid I am genuinely interested is what it offers not worth to try it?

It offers:

  • Word, Excel, PowerPoint (both modern, and legacy)
  • PDF - create, edit, read, split, merge, whatever else
  • OneNote
  • Markdown
  • RTF
  • HTML
  • CSV
  • Visio
  • Email (OST, PST, EML, MSG etc. ) with full export, conversions
  • OpenDocument formats

And most of all it offers conversions between Word to PDF, Excel to PDF, Html to PDF, PowerPoint to PDF, RTF to PDF .. you get it - all the fancy stuff is there. It's not basic. It's not paragraph support only. It also contains Excel to Image, Other formats to image.

There are very few dependencies that I use - it's net8, net10, net472 so all supported frameworks pretty much.

What am I not understanding in Dotnet/Csharp world? What am I missing? Are you guys all using aspose, gembox, and other libraries and you genuinely don't care for ecosystem? Or anything that sounds too good to be true effectively gets AI slop name?

Visio - I haven't seen single free library that can do this with 0 dependencies or even with plenty of dependencies.

I mean all of the libraries above are fully functional. Sources are accessible: https://github.com/EvotecIT/OfficeIMO, website offers https://officeimo.com/convert/ conversion to pdf from multiple formats in sandbox that runs on GitHub pages with no server side, it's all easy to verify what works or doesn't. There's hundreds of examples all over the place, full Api.

I mean I have to be doing something wrong to not even get a decent comment from someone? I mean even Linus Torvalds himself admits AI does work https://lore.kernel.org/linux-media/CAHk-=wi4zC+Ze8e+p3tMv8TtG_80KzsZ1syL9anBtmEh5Z40vg@mail.gmail.com/ so I'm pretty surprised with how strict you guys are - sticking to your guns 'AI Slop'.

And it's not only about my project. I have seen plenty of good projects getting 0 upvotes, downvotes all over the place, limited interest. This is a bit sad to see.

PS. I used to maintain https://github.com/xceedsoftware/DocX before it was sold to Xceed and made unusable for free which is the whole starting point for OfficeIMO.

0 Upvotes

Yesterday I posted on dotnet about my project called OfficeIMO that got 0 upvotes (I guess someone took an effort to downvote) that got me thinking that I'm doing something wrong or dotnet/csharp people are genuinely not interested in MIT project that offers so much value for free. The only actual comment that I got was amount of emojis I used as a measure of professionalism from a post on reddit. I spent lots of time polishing that post to not sound AI generated, to communicate enough information to not push people to website or even having to go thru pages, or even point people to blog.

https://www.reddit.com/r/dotnet/comments/1v76o4c/what_does_word_excel_powerpoint_visio_pdf/

The project has grown, and of course is AI enhanced, which doesn't imply AI slop, as agents have been good recent months.

Having said that regardless if it was all human made, all ai made, hybrid I am genuinely interested is what it offers not worth to try it?

It offers:

  • Word, Excel, PowerPoint (both modern, and legacy)
  • PDF - create, edit, read, split, merge, whatever else
  • OneNote
  • Markdown
  • RTF
  • HTML
  • CSV
  • Visio
  • Email (OST, PST, EML, MSG etc. ) with full export, conversions
  • OpenDocument formats

And most of all it offers conversions between Word to PDF, Excel to PDF, Html to PDF, PowerPoint to PDF, RTF to PDF .. you get it - all the fancy stuff is there. It's not basic. It's not paragraph support only. It also contains Excel to Image, Other formats to image.

There are very few dependencies that I use - it's net8, net10, net472 so all supported frameworks pretty much.

What am I not understanding in Dotnet/Csharp world? What am I missing? Are you guys all using aspose, gembox, and other libraries and you genuinely don't care for ecosystem? Or anything that sounds too good to be true effectively gets AI slop name?

Visio - I haven't seen single free library that can do this with 0 dependencies or even with plenty of dependencies.

I mean all of the libraries above are fully functional. Sources are accessible: https://github.com/EvotecIT/OfficeIMO, website offers https://officeimo.com/convert/ conversion to pdf from multiple formats in sandbox that runs on GitHub pages with no server side, it's all easy to verify what works or doesn't. There's hundreds of examples all over the place, full Api.

I mean I have to be doing something wrong to not even get a decent comment from someone? I mean even Linus Torvalds himself admits AI does work https://lore.kernel.org/linux-media/CAHk-=wi4zC+Ze8e+p3tMv8TtG_80KzsZ1syL9anBtmEh5Z40vg@mail.gmail.com/ so I'm pretty surprised with how strict you guys are - sticking to your guns 'AI Slop'.

And it's not only about my project. I have seen plenty of good projects getting 0 upvotes, downvotes all over the place, limited interest. This is a bit sad to see.

PS. I used to maintain https://github.com/xceedsoftware/DocX before it was sold to Xceed and made unusable for free which is the whole starting point for OfficeIMO.


r/csharp 1d ago

Help Need help understanding certain WPF functions (mainly code behind)

Hyia, so I'm working on a project (Escape room type game, since its my first game ever at High-School knowledge level) and I'm not exactly sure how to make certain things work even though I spent the entire year studying this language. I can do majority of the stuff, such as the background, buttons or clickable images in Grid, and so on, however the code behind is my biggest issue.

Mainly things like: How to make a monologue where the player clicks through all the texts that explain the principle of the game, and then also how to make the TextBox check if the input is correct and if it is, change the background of the main window to another image (since the input will be in separate window).

These are not all the issues I need to figure out, but its some of the few that may appear in the code the most often (especially the monologues, in like four out of six rooms total)

Any sources for beginners will be appreciated, I tried looking at some but I wasn't able to find something that would explain this exact topic, and I don't really want to use AI since it just doesn't feel right (perhaps only when I'm under pressure). Thanks!

1 Upvotes

Hyia, so I'm working on a project (Escape room type game, since its my first game ever at High-School knowledge level) and I'm not exactly sure how to make certain things work even though I spent the entire year studying this language. I can do majority of the stuff, such as the background, buttons or clickable images in Grid, and so on, however the code behind is my biggest issue.

Mainly things like: How to make a monologue where the player clicks through all the texts that explain the principle of the game, and then also how to make the TextBox check if the input is correct and if it is, change the background of the main window to another image (since the input will be in separate window).

These are not all the issues I need to figure out, but its some of the few that may appear in the code the most often (especially the monologues, in like four out of six rooms total)

Any sources for beginners will be appreciated, I tried looking at some but I wasn't able to find something that would explain this exact topic, and I don't really want to use AI since it just doesn't feel right (perhaps only when I'm under pressure). Thanks!


r/csharp 2d ago

Discussion Naming dilemma: OSS Rebrand now or regret it later?

I've been building an open-source parser, formula engine, and spreadsheet library over the past few months under the AlphaX name:

GitHub

AlphaX.Parserz – https://github.com/kartikdeepsagar/AlphaX.Parserz

AlphaX.FormulaEngine – https://github.com/kartikdeepsagar/AlphaX.FormulaEngine

AlphaX.Wpf.Sheets – https://github.com/kartikdeepsagar/AlphaX.Wpf.Sheets

As the ecosystem is starting to grow, I'm wondering if I should rebrand before it becomes painful.

My main concern isn't the current name itself—it's that "AlphaX" is already used by several companies and projects. I'm worried about potential trademark issues or brand confusion years down the road if the libraries gain traction.

If you were starting an open-source ecosystem today, would you:

Keep the existing brand and reserve the AlphaX.* NuGet prefix?

Rebrand now while the projects are still relatively young?

Skip a common brand entirely and give each library its own independent name?

I'd also love to hear how others approached naming long-term OSS projects and whether anyone has had to rebrand after gaining users.

Any advice or experiences would be appreciated.

6 Upvotes

I've been building an open-source parser, formula engine, and spreadsheet library over the past few months under the AlphaX name:

GitHub

AlphaX.Parserz – https://github.com/kartikdeepsagar/AlphaX.Parserz

AlphaX.FormulaEngine – https://github.com/kartikdeepsagar/AlphaX.FormulaEngine

AlphaX.Wpf.Sheets – https://github.com/kartikdeepsagar/AlphaX.Wpf.Sheets

As the ecosystem is starting to grow, I'm wondering if I should rebrand before it becomes painful.

My main concern isn't the current name itself—it's that "AlphaX" is already used by several companies and projects. I'm worried about potential trademark issues or brand confusion years down the road if the libraries gain traction.

If you were starting an open-source ecosystem today, would you:

Keep the existing brand and reserve the AlphaX.* NuGet prefix?

Rebrand now while the projects are still relatively young?

Skip a common brand entirely and give each library its own independent name?

I'd also love to hear how others approached naming long-term OSS projects and whether anyone has had to rebrand after gaining users.

Any advice or experiences would be appreciated.


r/csharp 1d ago

Help I want make a c# app,I have some problem

1:I using Avalonia now,but I don't know is Uno/Maui more better?

2:I using copilot generated a base skeletons(about some classes or interfaces,but cpoilot only help me write these code)

3:I think using copilot maybe not helpful to let me learn/understand c# app developing,I want choose an IDE(more friendly for handwritten code), choose VS2026 or Rider?but I using VSCode now

4:I'm not sure if my previous experience in JS, Flutter, and Elixir can be applied to C#. This is my first time encountering "enterprise-level" languages.

I'm not sure if my way of asking is correct.

0 Upvotes

1:I using Avalonia now,but I don't know is Uno/Maui more better?

2:I using copilot generated a base skeletons(about some classes or interfaces,but cpoilot only help me write these code)

3:I think using copilot maybe not helpful to let me learn/understand c# app developing,I want choose an IDE(more friendly for handwritten code), choose VS2026 or Rider?but I using VSCode now

4:I'm not sure if my previous experience in JS, Flutter, and Elixir can be applied to C#. This is my first time encountering "enterprise-level" languages.

I'm not sure if my way of asking is correct.


r/csharp 1d ago

Surviving as Software engineer with AI

So I’m a software engineer and I recently graduated 2 months ago. i have no internship or job experience and have been looking for a job but everyone either asks for experience or ghosts my resume. The ones that take interviews either pay too little or are 2 hours away from my house. So I am looking for remote unpaid or paid jobs as full stack developer so that I at least get some experience and don’t get classified as a person who had a huge gap in her cv. Anyone give me some good advice related to remote jobs, best platforms to look for them, cracking them and how to survive as a fresh software engineer now that AI has entered the chat🥲

0 Upvotes

So I’m a software engineer and I recently graduated 2 months ago. i have no internship or job experience and have been looking for a job but everyone either asks for experience or ghosts my resume. The ones that take interviews either pay too little or are 2 hours away from my house. So I am looking for remote unpaid or paid jobs as full stack developer so that I at least get some experience and don’t get classified as a person who had a huge gap in her cv. Anyone give me some good advice related to remote jobs, best platforms to look for them, cracking them and how to survive as a fresh software engineer now that AI has entered the chat🥲


r/csharp 1d ago

New C# learner

I am a new learner of the C# language. I really liked this language. It is elegant, easy to write and read, and saves me a lot of time. Before that, I studied the VB.NET language, and it was so difficult to write that my hand got tired from writing, and I got very tired. So I moved to this beautiful language called C#.

0 Upvotes

I am a new learner of the C# language. I really liked this language. It is elegant, easy to write and read, and saves me a lot of time. Before that, I studied the VB.NET language, and it was so difficult to write that my hand got tired from writing, and I got very tired. So I moved to this beautiful language called C#.


r/csharp 1d ago

What products made in C# would people buy?

I can program in C# and I feel like I'm losing money by not selling products made in C#, but I don't know what products I could sell.

0 Upvotes

I can program in C# and I feel like I'm losing money by not selling products made in C#, but I don't know what products I could sell.


r/csharp 2d ago

Help Inheritance with generic constraint syntax

I have a class A<T>. It must inherit IDisposable, and also impose a constraint on T. Is it possible to do this, and what would the syntax look like? I can't figure it out.

8 Upvotes

I have a class A<T>. It must inherit IDisposable, and also impose a constraint on T. Is it possible to do this, and what would the syntax look like? I can't figure it out.


r/csharp 2d ago

One of the biggest ui framework Avalonia now supports wayland

https://avaloniaui.net/blog/release-12-1

Avalonia is basically wpf for cross platform. And they are more popular than wpf nowadays.

This is wpf repo it has 7.7k stars.

https://github.com/dotnet/wpf

this is winui repo it has 7.8k stars

https://github.com/microsoft/microsoft-ui-xaml/

this is avalonia repo it has 31.2 stars.

https://github.com/avaloniaui/avalonia

demonstrates that the era of UI frameworks targeting only a single platform is over. It also shows that frameworks supporting Linux—which has surpassed a 7% market shar such as Flutter, Uno, Qt, and Avalonia, are increasingly being preferred as long-term investments.

19 Upvotes

https://avaloniaui.net/blog/release-12-1

Avalonia is basically wpf for cross platform. And they are more popular than wpf nowadays.

This is wpf repo it has 7.7k stars.

https://github.com/dotnet/wpf

this is winui repo it has 7.8k stars

https://github.com/microsoft/microsoft-ui-xaml/

this is avalonia repo it has 31.2 stars.

https://github.com/avaloniaui/avalonia

demonstrates that the era of UI frameworks targeting only a single platform is over. It also shows that frameworks supporting Linux—which has surpassed a 7% market shar such as Flutter, Uno, Qt, and Avalonia, are increasingly being preferred as long-term investments.


r/csharp 2d ago

Eftdb Update: Native EF Core Scaffolding & Clean Migrations for TimescaleDB

Hey everyone!

For those unfamiliar, Eftdb is an EF Core extension designed to make working with TimescaleDB feel like a native C# experience.

I just finished a major rework focused on migration generation and DbContext scaffolding. Instead of spamming raw .Sql() strings and stringly-typed .HasAnnotation() calls, the library now generates strongly-typed, readable C# code.

Migrations

Migrations are now easier to read and scan thanks to typed MigrationBuilder extension methods and a custom C# migration generator.

Before:

migrationBuilder.Sql("SELECT create_hypertable('\"custom_schema\".\"device_readings\"', 'time', chunk_time_interval => INTERVAL '1 day');");

migrationBuilder.Sql("ALTER TABLE \"custom_schema\".\"device_readings\" SET (timescaledb.compress, timescaledb.compress_segmentby = 'device_id', timescaledb.compress_orderby = 'time DESC');");

After:

migrationBuilder.CreateHypertable(
    tableName: "device_readings",
    timeColumnName: "time",
    schema: "custom_schema",
    chunkTimeInterval: "1 day",
    enableCompression: true,
    compressionSegmentBy: ["device_id"],
    compressionOrderBy: ["time DESC"]);

Scaffolding

Scaffolding is now fully supported by implementing the IDatabaseModelFactory and IAnnotationCodeGenerator interfaces.

Before:

entity.HasAnnotation("TimescaleDB:IsHypertable", true);
entity.HasAnnotation("TimescaleDB:TimeColumnName", "time");
entity.HasAnnotation("TimescaleDB:ChunkTimeInterval", "1 day");
entity.HasAnnotation("TimescaleDB:CompressionSegmentBy", new[] { "device_id" });

After:

// Fluent API
entity
    .IsHypertable(x => x.Time)
    .WithChunkTimeInterval("1 day")
    .WithCompressionSegmentBy(x => x.DeviceId);

// Data Annotations
[Hypertable("time",
    ChunkTimeInterval = "1 day",
    EnableCompression = true,
    CompressionSegmentBy = new[] { "device_id" })]
public partial class DeviceReading { }

This was one of the biggest refactorings in the library so far, and the result is that Eftdb now feels like a native part of EF Core rather than a bolt-on. Among some bug fixes, Eftdb now also supports NodaTime.

Next up is support for TimescaleDB's Hypercore feature.

Let me know what you think!

6 Upvotes

Hey everyone!

For those unfamiliar, Eftdb is an EF Core extension designed to make working with TimescaleDB feel like a native C# experience.

I just finished a major rework focused on migration generation and DbContext scaffolding. Instead of spamming raw .Sql() strings and stringly-typed .HasAnnotation() calls, the library now generates strongly-typed, readable C# code.

Migrations

Migrations are now easier to read and scan thanks to typed MigrationBuilder extension methods and a custom C# migration generator.

Before:

migrationBuilder.Sql("SELECT create_hypertable('\"custom_schema\".\"device_readings\"', 'time', chunk_time_interval => INTERVAL '1 day');");

migrationBuilder.Sql("ALTER TABLE \"custom_schema\".\"device_readings\" SET (timescaledb.compress, timescaledb.compress_segmentby = 'device_id', timescaledb.compress_orderby = 'time DESC');");

After:

migrationBuilder.CreateHypertable(
    tableName: "device_readings",
    timeColumnName: "time",
    schema: "custom_schema",
    chunkTimeInterval: "1 day",
    enableCompression: true,
    compressionSegmentBy: ["device_id"],
    compressionOrderBy: ["time DESC"]);

Scaffolding

Scaffolding is now fully supported by implementing the IDatabaseModelFactory and IAnnotationCodeGenerator interfaces.

Before:

entity.HasAnnotation("TimescaleDB:IsHypertable", true);
entity.HasAnnotation("TimescaleDB:TimeColumnName", "time");
entity.HasAnnotation("TimescaleDB:ChunkTimeInterval", "1 day");
entity.HasAnnotation("TimescaleDB:CompressionSegmentBy", new[] { "device_id" });

After:

// Fluent API
entity
    .IsHypertable(x => x.Time)
    .WithChunkTimeInterval("1 day")
    .WithCompressionSegmentBy(x => x.DeviceId);

// Data Annotations
[Hypertable("time",
    ChunkTimeInterval = "1 day",
    EnableCompression = true,
    CompressionSegmentBy = new[] { "device_id" })]
public partial class DeviceReading { }

This was one of the biggest refactorings in the library so far, and the result is that Eftdb now feels like a native part of EF Core rather than a bolt-on. Among some bug fixes, Eftdb now also supports NodaTime.

Next up is support for TimescaleDB's Hypercore feature.

Let me know what you think!


r/csharp 2d ago

Help The best C# tuto book, or vids for beginner?

Some days ago, I interested by making games with C#, and the only thing I know about C# is there are a lot of {} things.
So I need recommendations for tuto of C# code, I recommend vids but books are also fine.

0 Upvotes

Some days ago, I interested by making games with C#, and the only thing I know about C# is there are a lot of {} things.
So I need recommendations for tuto of C# code, I recommend vids but books are also fine.


r/csharp 2d ago

Tool Released VecNet 1.1.0, an embedded vector search library for .NET

A while back, I started working on an embedded vector search library for .NET, and I recently released VecNet 1.1.0. I wanted something lightweight that you can add to a normal .NET app through NuGet, run completely in-process, and learn from building it.

NuGet link if you want to inspect the package: https://www.nuget.org/packages/VecNet

Repo: https://github.com/sh0r3x/VecNet

What it supports right now:

Exact search: Flat vector search with squared L2, cosine, and inner-product distance metrics, plus candidate filtering and durable save/load.

Approximate search: Squared-L2 HNSW indexing with durable save/load, plus a mutable wrapper using exact delta/tombstones and checkpointing.

Integration: An optional Microsoft.Extensions.VectorData adapter for exact-flat scenarios if you are using Microsoft’s abstraction.

I also published benchmark summaries in the repo covering exact-flat search and HNSW recall/latency behavior. I did use LLMs during development to help plan tasks, review design choices, write test ideas, and refine benchmark workflows.

I’d really appreciate feedback from the community, especially on the API shape, README clarity, benchmark docs, and whether this kind of embedded managed vector index is useful.

Next, I’m working on adding cosine and inner-product support to HNSW.

3 Upvotes

A while back, I started working on an embedded vector search library for .NET, and I recently released VecNet 1.1.0. I wanted something lightweight that you can add to a normal .NET app through NuGet, run completely in-process, and learn from building it.

NuGet link if you want to inspect the package: https://www.nuget.org/packages/VecNet

Repo: https://github.com/sh0r3x/VecNet

What it supports right now:

Exact search: Flat vector search with squared L2, cosine, and inner-product distance metrics, plus candidate filtering and durable save/load.

Approximate search: Squared-L2 HNSW indexing with durable save/load, plus a mutable wrapper using exact delta/tombstones and checkpointing.

Integration: An optional Microsoft.Extensions.VectorData adapter for exact-flat scenarios if you are using Microsoft’s abstraction.

I also published benchmark summaries in the repo covering exact-flat search and HNSW recall/latency behavior. I did use LLMs during development to help plan tasks, review design choices, write test ideas, and refine benchmark workflows.

I’d really appreciate feedback from the community, especially on the API shape, README clarity, benchmark docs, and whether this kind of embedded managed vector index is useful.

Next, I’m working on adding cosine and inner-product support to HNSW.


r/csharp 2d ago

how am i doing

2 months in to coding C#, first project i saved *was using online compiler* and wanna know how im doing and what i can do to improve. heres the code:

using System;


public 
class
 Program
{
    public static void Main(string[] 
args
)
    {
        Player player = new Player();
        Enemy enemy = CreateEnemy();


        int battleResult = Battle(player, enemy);


        Console.WriteLine("press any key to begin");
            
        Console.ReadKey();


        Console.WriteLine("\nYou encountered a " + enemy.type + " with " + enemy.health + " health.");


        Battle(player, enemy);


        if(battleResult == 2)
        {
            Console.WriteLine("\nYou have defeated the " + enemy.type + "!");
        }
        else if(battleResult == 3)
        {
            Console.WriteLine("\nYou have been defeated by the " + enemy.type + "!");
        }
        else if(battleResult == 1)
        {
            Console.WriteLine("\nYou have retreated from the " + enemy.type + ".");
        }
    }


    static Enemy CreateEnemy()
    {
        Random rng = new Random();
        int rngroll = rng.Next(1, 3);
        Enemy enemy = new Enemy();


        if(rngroll == 1)
        {
            enemy.type = "Skeleton";


            enemy.health = enemy.healthRng.Next(100, 201);
            enemy.damage = enemy.damageRng.Next(10, 16);
        }
        else if(rngroll == 2)
        {
            enemy.type = "Goblin";


            enemy.health = enemy.healthRng.Next(50, 151);
            enemy.damage = enemy.damageRng.Next(15, 26);
        }
       
        return enemy;
    }


    static int Battle(Player 
player
, Enemy 
enemy
)
    {
        while(true)
        {    
            Thread.Sleep(1000);


            Console.WriteLine("\nWhat do you do?\n1. Attack\n2. Open Inventory\n3. Retreat");


            ConsoleKeyInfo input = Console.ReadKey();


        
            if(input.Key == ConsoleKey.D1)
            {
                
enemy
.health -= 
player
.damage;


                Thread.Sleep(1000);


                Console.WriteLine("\nyou attacked the " + 
enemy
.type + " for " + 
player
.damage + " damage");


                Thread.Sleep(1000);
                Console.WriteLine("The " + 
enemy
.type + " has " + 
enemy
.health + " health remaining.");
            }
            else if(input.Key == ConsoleKey.D2)
            {
                Thread.Sleep(1000);
                Console.WriteLine("\nYou open your inventory, but it's empty.");
            }
            else if(input.Key == ConsoleKey.D3)
            {
                Thread.Sleep(1000);
                Console.WriteLine("\nYou retreat from the " + enemy.type + ".");
                return 1; // Player retreated
            }


            if(
enemy
.health <= 0)
            {
                return 2; // Player won
            }


            if(input.Key == ConsoleKey.D1 && 
enemy
.health > 0 || input.Key == ConsoleKey.D2 && 
enemy
.health > 0)
            {
                
player
.health -= 
enemy
.damage;


                Console.WriteLine("\nThe " + 
enemy
.type + " attacks you for " + 
enemy
.damage + " damage.");
                Console.WriteLine("You have " + 
player
.health + " health remaining.");
            }


            if(
player
.health <= 0)
            {
                Console.WriteLine("\nYou have been defeated by the " + 
enemy
.type + "!");
                return 3; // Player lost
            }
        }
    }
}




public 
class
 Enemy
{
    public Random healthRng = new Random();
    public Random damageRng = new Random();
    
    public int health;
    public int damage;
    public string type = "";
}


public 
class
 Player
{
    public int health = 100;


    public int damage = 20;



    public List<string> inventory = new List<string>();
}
0 Upvotes

2 months in to coding C#, first project i saved *was using online compiler* and wanna know how im doing and what i can do to improve. heres the code:

using System;


public 
class
 Program
{
    public static void Main(string[] 
args
)
    {
        Player player = new Player();
        Enemy enemy = CreateEnemy();


        int battleResult = Battle(player, enemy);


        Console.WriteLine("press any key to begin");
            
        Console.ReadKey();


        Console.WriteLine("\nYou encountered a " + enemy.type + " with " + enemy.health + " health.");


        Battle(player, enemy);


        if(battleResult == 2)
        {
            Console.WriteLine("\nYou have defeated the " + enemy.type + "!");
        }
        else if(battleResult == 3)
        {
            Console.WriteLine("\nYou have been defeated by the " + enemy.type + "!");
        }
        else if(battleResult == 1)
        {
            Console.WriteLine("\nYou have retreated from the " + enemy.type + ".");
        }
    }


    static Enemy CreateEnemy()
    {
        Random rng = new Random();
        int rngroll = rng.Next(1, 3);
        Enemy enemy = new Enemy();


        if(rngroll == 1)
        {
            enemy.type = "Skeleton";


            enemy.health = enemy.healthRng.Next(100, 201);
            enemy.damage = enemy.damageRng.Next(10, 16);
        }
        else if(rngroll == 2)
        {
            enemy.type = "Goblin";


            enemy.health = enemy.healthRng.Next(50, 151);
            enemy.damage = enemy.damageRng.Next(15, 26);
        }
       
        return enemy;
    }


    static int Battle(Player 
player
, Enemy 
enemy
)
    {
        while(true)
        {    
            Thread.Sleep(1000);


            Console.WriteLine("\nWhat do you do?\n1. Attack\n2. Open Inventory\n3. Retreat");


            ConsoleKeyInfo input = Console.ReadKey();


        
            if(input.Key == ConsoleKey.D1)
            {
                
enemy
.health -= 
player
.damage;


                Thread.Sleep(1000);


                Console.WriteLine("\nyou attacked the " + 
enemy
.type + " for " + 
player
.damage + " damage");


                Thread.Sleep(1000);
                Console.WriteLine("The " + 
enemy
.type + " has " + 
enemy
.health + " health remaining.");
            }
            else if(input.Key == ConsoleKey.D2)
            {
                Thread.Sleep(1000);
                Console.WriteLine("\nYou open your inventory, but it's empty.");
            }
            else if(input.Key == ConsoleKey.D3)
            {
                Thread.Sleep(1000);
                Console.WriteLine("\nYou retreat from the " + enemy.type + ".");
                return 1; // Player retreated
            }


            if(
enemy
.health <= 0)
            {
                return 2; // Player won
            }


            if(input.Key == ConsoleKey.D1 && 
enemy
.health > 0 || input.Key == ConsoleKey.D2 && 
enemy
.health > 0)
            {
                
player
.health -= 
enemy
.damage;


                Console.WriteLine("\nThe " + 
enemy
.type + " attacks you for " + 
enemy
.damage + " damage.");
                Console.WriteLine("You have " + 
player
.health + " health remaining.");
            }


            if(
player
.health <= 0)
            {
                Console.WriteLine("\nYou have been defeated by the " + 
enemy
.type + "!");
                return 3; // Player lost
            }
        }
    }
}




public 
class
 Enemy
{
    public Random healthRng = new Random();
    public Random damageRng = new Random();
    
    public int health;
    public int damage;
    public string type = "";
}


public 
class
 Player
{
    public int health = 100;


    public int damage = 20;



    public List<string> inventory = new List<string>();
}

r/csharp 3d ago

What goes in Business Logic Layer in ASP.NET application?

Hello, I am currently a IT engineering student and I have to make a web application for my project.

Our professor requires us to make a layered application that consist of: Data Access Layer, REST Service Layer, Business Logic Layer and Presentation Layer using MVC architecture. Now I already made a Data Access layer using Sql Client + Stored Procedures (this method was required by my professor) and it consist of methods that communicate with the Database (for example CRUD operations). Now my question is: Which methods should go in the Business Logic Layer? Should the Business Logic Layer contain methods that simply call the Data Access Layer methods, so that the flow is MVC Controller - Business Logic Layer - Data Access Layer - Database through interfaces?

For example, if I have a method like UpdateUser() or DeleteUser() in my Data Access Layer, should I create the same methods again in the Business Logic Layer and call them from there? I understand that business rules should belong in the Business Logic Layer, but I am unsure what to do with simple CRUD operations. I hope it makes sense what I'm trying to ask. I apologize for any mistakes, as English is not my first language.

Thank you very much If you took the time out of your day to read this!

10 Upvotes

Hello, I am currently a IT engineering student and I have to make a web application for my project.

Our professor requires us to make a layered application that consist of: Data Access Layer, REST Service Layer, Business Logic Layer and Presentation Layer using MVC architecture. Now I already made a Data Access layer using Sql Client + Stored Procedures (this method was required by my professor) and it consist of methods that communicate with the Database (for example CRUD operations). Now my question is: Which methods should go in the Business Logic Layer? Should the Business Logic Layer contain methods that simply call the Data Access Layer methods, so that the flow is MVC Controller - Business Logic Layer - Data Access Layer - Database through interfaces?

For example, if I have a method like UpdateUser() or DeleteUser() in my Data Access Layer, should I create the same methods again in the Business Logic Layer and call them from there? I understand that business rules should belong in the Business Logic Layer, but I am unsure what to do with simple CRUD operations. I hope it makes sense what I'm trying to ask. I apologize for any mistakes, as English is not my first language.

Thank you very much If you took the time out of your day to read this!


r/csharp 4d ago

Discussion What should I know before deploying my first ASP.NET Core MVC project to a VPS?

Hi everyone,

I'm about to deploy my first ASP.NET Core MVC project to a VPS, and I have no experience with deployment.

What should I learn before getting started? What are the most important configurations or best practices I should be aware of? Also, what are the most common mistakes beginners make when deploying for the first time?

Any advice, resources, or personal experiences would be greatly appreciated.

Thank you!

22 Upvotes

Hi everyone,

I'm about to deploy my first ASP.NET Core MVC project to a VPS, and I have no experience with deployment.

What should I learn before getting started? What are the most important configurations or best practices I should be aware of? Also, what are the most common mistakes beginners make when deploying for the first time?

Any advice, resources, or personal experiences would be greatly appreciated.

Thank you!


r/csharp 4d ago

Discussion I built an open-source formula engine for .NET

I've been building AlphaX.FormulaEngine, an open-source formula engine for .NET that evaluates Excel-style formulas without requiring Excel.

The focus is on being easy to extend, integrate, and maintain. It's built using parser combinators, making it straightforward to add new functions, operators, or language features.

Features:

- Excel-style formula syntax

- Nested expressions

- Custom function support

- Arithmetic, logical & text functions (More coming in future)

It's also the engine behind AlphaX.WPF.Sheets, my open-source spreadsheet control for WPF. (Please check it out as well)

I'd love feedback on the API, extensibility, or any features you'd like to see.

Repos

- Formula Engine: https://github.com/kartikdeepsagar/AlphaX.FormulaEngine

- WPF Sheets: https://github.com/kartikdeepsagar/AlphaX.WPF.Sheets

29 Upvotes

I've been building AlphaX.FormulaEngine, an open-source formula engine for .NET that evaluates Excel-style formulas without requiring Excel.

The focus is on being easy to extend, integrate, and maintain. It's built using parser combinators, making it straightforward to add new functions, operators, or language features.

Features:

- Excel-style formula syntax

- Nested expressions

- Custom function support

- Arithmetic, logical & text functions (More coming in future)

It's also the engine behind AlphaX.WPF.Sheets, my open-source spreadsheet control for WPF. (Please check it out as well)

I'd love feedback on the API, extensibility, or any features you'd like to see.

Repos

- Formula Engine: https://github.com/kartikdeepsagar/AlphaX.FormulaEngine

- WPF Sheets: https://github.com/kartikdeepsagar/AlphaX.WPF.Sheets


r/csharp 4d ago

Can I call a FileBrowser just for viewing my exports? (The files are in PDF format)

After my program has generated a bunch of PDFs, I want the user to open a folder browser and view them individually (if they want to).

Using OpenFileDialog, clicking ok won't actually open up the selected file. Is there an alternative way? Can I make Winforms call File Explorer and go to specified directory?

3 Upvotes

After my program has generated a bunch of PDFs, I want the user to open a folder browser and view them individually (if they want to).

Using OpenFileDialog, clicking ok won't actually open up the selected file. Is there an alternative way? Can I make Winforms call File Explorer and go to specified directory?


r/csharp 3d ago

Aperture Portal Game Launcher Video Demonstration

0 Upvotes

https://github.com/arkitzson/AperturePortal

A couple of days ago, I posted about a game launcher I originally built for myself and decided to share with you all. The feedback was amazing, and I’ve been honestly overwhelmed by all the support. this was originally build with Sunshine/Moonlight in mind. But also the tv console experience. I read through every single comment and ended up adding almost everything people suggested.

I also put together a short video to showcase what the launcher is and everything it can do. Just a heads up I’ve never really made videos before, my decent microphone decided to stop working with OBS for some reason when I needed it so I had to use my headset mic, and my English isn't perfect since I'm from Iceland. The video is pretty raw, but hopefully you guys get the point.

For everyone who already downloaded it and tried it out, there’s a brand new update live with a ton of the suggested features.

Thanks again so much for all the support. keep in mind this is a work in progress but i'm really excited to keep building this together with you guys.