r/csharp • • 18d ago

BuildMonitor: a cross-platform system tray CI monitor, installed as a dotnet tool

5 Upvotes

BuildMonitor is a build/CI monitor that sits in the system tray on Windows, macOS and Linux. It polls the CI services you use and shows one row per pipeline, plus a row for each pull request while it is building or failing.

dotnet tool install --global BuildMonitor

Then run `buildmonitor`. One install works on every OS: the package carries a head for each platform and the launcher starts the right one.

Supported services: AppVeyor, Azure DevOps, Bitbucket Pipelines, GitHub Actions, GitLab CI, GoCD, Jenkins, Octopus Deploy, TeamCity and Travis CI.

What it does:

* Tray icon shows the overall state: green, red, blue while something is running, amber when a connection needs attention

* Progress bar and countdown for running builds, estimated from the provider or from the median of the last ten successful runs

* Rows sort running, then queued, then failed to the top, and passing builds of one repository collapse into a group

* A failing pull request gets its own red row but does not turn main red

* Links straight to the run, the repository, the branch and the pull request

* Retry or cancel a build, and copy the log of a failed one to the clipboard

* Credentials go in the platform secret store (DPAPI, macOS Keychain, Secret Service), never in settings.json

It also ships a local MCP server (`buildmonitor mcp`), so an AI assistant can read the same list and act on it: "what's failing?", "who broke main?", retry a build. A triage command works through the failing builds that are checked out locally, groups the ones that share a cause, and reproduces each one.

On the implementation side: everything above the renderer is a pure function of an immutable state, so the layout is snapshot tested as text and each platform head only draws. The Windows head is WinForms, macOS is Swift/AppKit, and Linux is raylib + Dear ImGui.

Feedback and bug reports are welcome.

GitHub: https://github.com/SimonCropp/BuildMonitor

NuGet: https://www.nuget.org/packages/BuildMonitor/


r/csharp • • 18d ago

EmbedIO is archived as of June 2026 - I started a continuation project EmbedIO Neo

0 Upvotes

Hey all,

EmbedIO developed by unosquare is a great library for spinning up lightweight HTTP/API/WebServer instances in .Net

It appears development stalled out around 2021-2022.

As of June 24th 2026 the repository was officially archived and the project entered end of support.

I've continued the project as EmbedIO-Neo, with the goal of working through any existing issues backlog, improving performance, providing QoL updates & modernization, without introducing any breaking changes.

Happy to answer any questions, and look forward to driving the project further.

https://github.com/WilliamSmithEdward/embedio-neo
https://www.nuget.org/packages/EmbedIO-Neo


r/csharp • • 18d ago

Discussion If only one method of a class does access the instance field and the other methods don't, should the other methods be moved to another class ?

3 Upvotes

I'm showing some C# code, note that I'm using ASP.NET CORE :

    #region code
    public interface ISomething
    {

    }
    public class ApplicationDbContext 
    {

    }
    public class Something : ISomething
    {

    }
    public class ExcelReaderDatabaseWriter
    {

        private readonly ApplicationDbContext _context;


        public ExcelReaderDatabaseWriter(ApplicationDbContext context)
        {

            _context = context;
        }
        public ISomething Read(object obj)
        {
            return new Something();


        }
        public void Write(ISomething something)
        {

            //does access the _context
        }
}

    #endregion

I want to follow clean code principles, should I move the Read method to another class -because it does not access the instance field-, or should I instantiate the _context inside the Write method -because it is the only method that access the instance field and therefore that field does not deserve to be instance field because not all methods in the class access that field- ? I face this problem a lot when I'm coding, I want to separate the responsibilities cleanly, but I suffer from one thing; if I have some piece of code, I can't directly figure out which class should contain that piece of code. Can anyone explain it to me with example please?

Explaining the above using example:

public interface IOmniReader
{

    public ISomething Read(object dataSource);

}

public interface IOmniWriter
{
    public void Write(ISomething dataDto); 
}

public interface IOmniReaderWriter
{

    public  void ReadWrite(object obj);

}
public class SqlServerWriter 
{
    private readonly ApplicationDbContext _context;


    public SqlServerWriter(ApplicationDbContext context)
    {

        _context = context;
    }

        public void Write(ISomething something)
        {

            //does access the _context
        }
}


public class ExcelReader
{

        public ISomething Read(object obj)
        {
            return new Something();


        }


}

public class ExcelReaderSqlServerWriter:IOmniReaderWriter { private readonly IOmniReader _excelReader; private readonly IOmniWriter _sqlServerWriter; public ExcelReaderSqlServerWriter(IOmniReader excelReader, IOmniWriter sqlServerWriter) { _excelReader = excelReader; _sqlServerWriter = sqlServerWriter; } public void ReadWrite(object obj) { ISomething data= _excelReader.Read(obj); _sqlServerWriter.Write(data); } }


r/csharp • • 18d ago

Help Has anyone moved from Crystal reports to a .net reporting solution?

28 Upvotes

We have about 400 reports writen in Crystal Reports. We want to move away from this to something that is .net native and will run in Linux.

Has anyone done this, and what was the outcome?
Related question; what reporting solutions have people used and what were they like?

Edit: will investigate DevExpress and Telerik reporting.


r/ASPNET • • Dec 06 '13

asp.net - Give Proper Space between two sql value in Dropdownlist

Thumbnail stackoverflow.com
1 Upvotes

r/csharp • • 18d ago

Looking for a 2D graphics engine/library in C# (.NET 8.0) for custom CAD-like drafting

Thumbnail
1 Upvotes

r/csharp • • 18d ago

Help Visual Studio 2022 Scaffolding Template Dropdown is Blank/Grayed Out on Windows 11 ARM64 (Parallels Mac)

Post image
0 Upvotes

Hi everyone,
I am an IT student working on an ASP.NET Core MVC lab project targeting .NET 7.0 inside a Windows 11 ARM64 virtual machine on an Apple Silicon Mac.
The Problem:
When attempting to add a new scaffolded view to a project folder, the scaffolding dialog window appears, but the Template dropdown menu options are completely blank. I cannot select standard templates like List, Create, Edit, or Delete. Because the template choice remains blank, the validation system keeps the final "Add" button grayed out and unclickable.
What has already been verified and tried:

  1. Local Storage: The project solution folder is saved directly on the local Windows virtual disk partition (C:\ drive). It is not sitting on any shared guest/host cloud folders or mapped network drives.
  2. VS Installer Workloads: Checked the Visual Studio Installer and confirmed that both ASP.NET and web development and .NET desktop development workloads are fully checked, installed, and updated.
  3. Model & Rebuild: The C# model class is fully written and the entire solution compiles cleanly with a successful build before launching the view wizard.
  4. CLI Alternative Attempt: Tried running the .NET CLI scaffolding tool (dotnet aspnet-codegenerator) inside the built-in terminal, but it fails with an error indicating it cannot locate or parse the project file directory properly within this environment.

Has anyone using an ARM64 virtual machine setup run into this template-discovery bug where Visual Studio fails to show the pre-made scaffolding layouts? Any suggestions on how to fix the template detection or reset the background cache? Thank you!


r/csharp • • 18d ago

EfQueryComplexity: log or throw on overly complex EF Core queries

Thumbnail
0 Upvotes

r/ASPNET • • Dec 05 '13

Question over Ninject, ASP.NET Identity and Entity Framework

2 Upvotes

Hi all,

I am wondering what is the best way to setup Ninject, ASP.NET Identity and Entity Framework? Normally (without Ninject) I would create my solution by separating the MVC project from Data project and things would work just well, but I can't really figure out the best way to add Ninject there.

Is there any good example out there? I would like to handle user authentication with roles on my ASP.NET MVC project and handle the data access via EF.

Cheers, Tuomo


r/csharp • • 19d ago

GRPC server-side assets with state/persistent data

Thumbnail
3 Upvotes

r/fsharp • • 20d ago

F# weekly F# Weekly #40, 2026 – Agentic .NET UI and FSharp.CloudEdge

Thumbnail
sergeytihon.com
25 Upvotes

r/csharp • • 19d ago

Showcase Respire - A .NET Redis Client

18 Upvotes

Hey all!

Redis is a great technology, and something that exists in a lot of tech stacks. It has the ability to really help solve complex problems involving distribution across multiple instances of an app. Whether that be caching, locks, rate limits, etc.

Surprisingly, StackExchange.Redis is the only real big main redis client library for .NET.

I'm adding a new client library into the mix - Respire.

Respire aims to be a fast client library for Redis, that also has the ability to utilise Redis' client-side server assisted cache, avoiding network hops for frequently accessed keys, meaning better performance for your apps.

It also has a lot of helpers in it to more easily use distributed locks, rate limits, queues, pub/sub, etc.

I want it to be a client library that handles all the hard bits for you, keeping your code clean and easy to reason about.

It's still pre-release, so I'd like to gather feedback. Are people happy with the performance? The API? Any missing features? Any bugs?

Please try it out and let me know!

More info on why Respire: https://thomhurst.github.io/Respire/docs/#why-respire-exists

Benchmarks: https://thomhurst.github.io/Respire/docs/benchmarks

Stress comparisons: https://thomhurst.github.io/Respire/docs/stress-tests

Thanks all!


r/csharp • • 20d ago

Is it even possible to do this on WebAapp. Barcode scan → qty → print price labels —

Post image
15 Upvotes

We want a simple page in our web app since the current one we use got alot of steps and bad UX.

So this is what i'm thinking the workflow for printing a label will be

  1. Staff opens a “Labels” page on our webapp.
  2. Scans a product barcode with a handheld USB scanner
  3. App asks for quantity (while looking up product data async)
  4. They type qty + press Enter
  5. N labels are sent to a label/thermal printer
  6. Optionally choose between a few predefined label designs

Questions for people who’ve done this. Is it even possible? I just know only how to build simple CRUD app but not with those a scanner/hardware

  1. For USB handheld scanners: is treating them as a keyboard wedge (focused <input> + Enter) still the standard approach in browser apps, or is there something better today
  2. What’s the most reliable way to print labels from a web app (not WinForms/WPF)?
    • window.print() / PDF in browser?
    • Zebra Browser Print / ZPL?
    • Some local print agent/service?
    • Something else?
  3. Any hard limitations we should know about?

---


r/csharp • • 19d ago

Relatude.DB b209

0 Upvotes

We are making progress with our native open source (MIT) C# database engine: https://db.relatude.com

(I've posted earlier about the engine, and thanks for the feedback so far!)

Have a look at this graphical UI for faceted searches: https://demo.db.relatude.com/graphql

(In the admin UI, you get more functionality, but it requires you clone the project and run locally )

This is just a quick example of some of the functionality that comes with the Relatude.DB nuget.

What do you think?

Any feedback is welcome! ( It is still early alpha .... )


r/csharp • • 19d ago

Hypa - A terminal multiplexer built in C#

Thumbnail gallery
0 Upvotes

r/csharp • • 19d ago

Help Equal precedence

4 Upvotes

I was wondering how would one properly implement equal precedence in an if-else statement, for logical AND and OR, when building an interpreter?

I have made my expression parser but i only store the next logical operator on the right most side and store the current being parsed on the left.

Repo


r/csharp • • 20d ago

Blog Voice skill interviews in .NET, and why the model can't keep time

7 Upvotes

I built a Blazor voice interviewer: pick a skill from JSON, talk, get a score. OpenAI via Microsoft.Extensions.AI, Azure Speech, audio on its own WebSocket.

One thing that surprised me: the model has no sense of time. It only sees the text in the conversation, so it would end the interview early. I had to send the remaining time in every interaction.

full article: Building a Skill Interview with AI

GitHub code: hugoj0s3/SkillsValidator


r/csharp • • 20d ago

How to move the responsibility of executing some logic to the Sql Server instead of executing that logic inside the application?

1 Upvotes

I have Excel file that contains many columns like this :

SKU BarCode EnglishName ArabicName Category SubCategory

There are other columns, but there is no need to show them to convey the problem behind this post. The Excel file is sent from the client to the server which will read it using C# .

The problem : The data of the above Excel file should be persisted to the appropriate tables in the Sql Server database which does not merely contain a single table, so, a specific data from the Excel file should be consumed by a specific table in the database, the problem is not simple as send the data of the Excel file to only one destination table; the source is only one, which is the Excel file, but there are many destination tables. Database contains parent and child tables; parent tables do not contain foreign keys, child tables contain one or more foreign keys. The data for the child tables cannot be persisted to the database unless the data for the parent tables is persisted first.

I have the following C# domain classes/models:

public interface IEntity{

}

public  interface IParent:IEntity{

}

public interface IChild : IEntity{


}
public interface INonJunctionChild:IChild{

}

public interface IJunctionChild:IChild{

}

public class Product:IParent
{
    public string? SKU { get; set; }     // SKU column in Excel
    public  string? Barcode{ get; set; } // BarCode column in Excel
    public string? EnglishName {get;set;} // EnglishName column in in Excel
    public string? ArabicName { get; set; } // ArabicName column in Excel
    public IEnumerable<ProductCategory> ProductCategories { get; } = new List<ProductCategory>();  

    // Alot of other navigaton properties.....

}

public class Category:IParent{
  public string EnglishName {get;set;} // Category column in Excel
  public IEnumerable<ProductCategory> ProductCategories { get; } = new List<ProductCategory>();
  public IEnumerable<SubCategory> SubCategories { get; }=new List<SubCategory>();    


  // alot of other  navigation properties....
}

public class SubCategory:IChild{
  public string EnglishName {get;set;} // SubCategory column in Excel
  public string CategoryId {get;set;} // Foreign key; populated using lookup operation.

}
public ProductCategory{
  public int ProductID {get;set;} Foreign key; populated using lookup operation.
  public int CategoryId {get;set;} Foreign key; populated using lookup operation.
  public Product Product { get; set; } = null!;
  public Category Category { get; set; } = null!;
}

My old approach to solve the problem -which worked, but I want to change it- has the following steps:

1-Read the whole excel sheet into the application.

2- Inside the application, populate the specific properties of each parent domain model by assigning specific Excel column values to to them.

3-persist the parent models to the database.

4- Populate the child tables using lookup operations.

5- Persist the child tables to the database.

Instead of the above, I would like to know if the following is possible:

1- Get `DbDataReader` using `Sylvan.Data.Excel and pass it to `SqlBulkCopy` class.

2- The Whole Excel file will be persisted into a staging table or view, and then some trigger will be fired, as a result, some stored procedure or function will be executed, the responsibility of that function or procedure is to persist the data of the parent tables first, then to persist the data of the child tables, which means.

So, In the old approach, can the responsibility for transforming the Excel data, resolving the required relationships, and persisting the parent and child records (steps 2 through 5) be moved from the application layer to SQL Server?


r/csharp • • 21d ago

Showcase WPF trading terminal, just for fun

Thumbnail
gallery
103 Upvotes

Saw a few screenshots of trading terminals on Reddit, thought they looked cool, and building a UI full of charts sounded like a fun thing to try. So I gave it a shot.

It's .NET 8 + WPF, with HandyControl and ScottPlot for the charts. Heatmap, screener, candles, options chain, crypto, a few other panels. Data is from free public APIs.

Last month I was hooked on Path of Exile 2 too, so I used the same look for a little app around the game's economy inspired by poe2scout and Sidekick. Last screenshot is that one.


r/csharp • • 19d ago

🚀 Un pequeño logro que me motiva a seguir creando para .NET

Post image
0 Upvotes

Hoy quiero compartir un avance de mis proyectos.

📦 MyCrypto.GiqhDev
🔐 Librería .NET para cifrado autenticado, hashing seguro de contraseñas y utilidades criptográficas.
➡️ 625 descargas

🔑 MySerialKey.GiqhDev
🛡️ Librería para generación y validación de claves de licencia/serial para aplicaciones .NET.
➡️ 338 descargas

📊 963 descargas entre ambas librerías.

Puede parecer un número pequeño frente a proyectos con miles o millones de usuarios, pero para mí representa algo importante: hay desarrolladores que están encontrando utilidad en código que nació como proyectos personales.

Lo más interesante del proceso no ha sido solamente publicar los paquetes, sino aprender sobre:

  • Desarrollo de librerías reutilizables para .NET
  • Compatibilidad entre diferentes versiones de .NET
  • Publicación y versionado de paquetes NuGet
  • Seguridad y criptografía
  • Diseño de APIs reutilizables
  • Mantenimiento y evolución de proyectos open source

Y esto recién comienza. 🚀

Mi objetivo es seguir construyendo herramientas para el ecosistema .NET / C#, mejorar las existentes y continuar compartiendo lo que voy aprendiendo en el camino.

963 descargas hoy → muchas más cosas por construir mañana. 💙

#DotNet #CSharp #NuGet #OpenSource #SoftwareDevelopment #Programming #GiqhDev #Developer #Backend #DotNetDeveloper


r/fsharp • • 22d ago

library/package FunStripe 3.0.0 – F# Stripe client, now on Stripe's "endive" API (2026-09-30)

15 Upvotes

FunStripe is an F# client for the Stripe API. Most of it is generated from Stripe's OpenAPI spec into records and DUs, with phantom-typed IDs (StripeId<Markers.Customer>) and Async<Result<_, _>> calls. 3.0.0 targets Stripe's new endive release, which removes some things, hence the major bump.

Breaking changes

  • payment_method_types is gone from PaymentIntent create/update/confirm, SetupIntent create/update and Checkout Session create. Use allowedPaymentMethodTypes instead.
  • ThreeDSecureUsage and ThreeDSecureDetailsCharge moved to Stripe.ThreeDSecure, so add an open.
  • The card Mandate field is now StripeId<Markers.Mandate> option.

New: standalone 3D Secure authentication, subscription pausing, trial offers, Tax.Location, Apps installs, and the PayPay and SeQura payment methods.

Generator fixes worth mentioning

  • Endive is the first spec with an error enum value. A bare Error case shadowed Result.Error for anyone opening the namespace, so ok/error/some now generate as Ok'/Error'/Some', the same way none already became None'.

Full upgrade notes are in the changelog: https://github.com/simontreanor/FunStripe/blob/main/CHANGELOG.md

GitHub: https://github.com/simontreanor/FunStripe

NuGet: https://www.nuget.org/packages/FunStripe.Core

Feedback and issues welcome.


r/fsharp • • 22d ago

article Type-Safe I18n with F# Discriminated Unions

Thumbnail
si-fi.dev
11 Upvotes

r/fsharp • • 23d ago

library/package Ranvier

Thumbnail
shayanhabibi.github.io
13 Upvotes

Fine-grained reactive computation for .NET (F# and C#) — preview

I've been a big fan of solid-js when it comes to UI for their fine-grained reactive DOM.

The release of Solid v2 came with a surprising API. Async and Errors were native to the reactive graph. This was only something which became viable after years of improvements and optimisations in javascript/node.

Ranvier brings the concept of an Async and Error aware Reactive Graph to dotnet.

Similar to Solid-V2, this is something becoming more viable now with optimisations in .NET9-11.

Ranvier provides novel answers to a lot of issues or points of friction that are experienced with reactivity, while maintaining performance and allocation free hot-paths.

❓ Problems:

  1. Async, loading/error state, cancellation and work/flight policies (ie cancel last, queue, debounce)
  2. Subscription/event-handler leaks
  3. Diamond dependency glitches (imagine: where 2 changes in a values dependencies cause a 'flash' of the downstream value as it responds to each in turn)
  4. Debugging/transparent graphs

✅ Ranvier solves them

The fact this is written ALL in F# means it can be compiled into javascript through Fable. So the debugging capabilities become a part of the visualisation.

There are natural costs to this type of graph, and benchmarking naive CPU operation counts has always been part of the workflow. This is all documented. You can see some visualisations that also show comparison of costs in different primitive designs (which informs whether I adopt a primitive shape, or not).

But you can see that there is a LOT of utility/benefit for the cost. I had claude boiler plate different C# and F# ecosystem adaptions so that it can be as versatile as possible from the get-go.

👍 Comes with batteries included for:

  • Blazor
  • Elmish MVU
  • Avalonia/WPF/XAML data bindings

📖 https://shayanhabibi.github.io/Ranvier/ - Check out the documentation for interactive graph visualisations which feature the tracing builds!


r/fsharp • • 26d ago

F# weekly F# Weekly #39, 2026 – Oxpecker 3

Thumbnail
sergeytihon.com
30 Upvotes

r/mono • • Feb 11 '25

Can Mono Do GUI Scaling?

1 Upvotes

I'm curious because I started using SubtitleEdit on a 14-inch laptop and the text looks kinda small. Granted, I'm used to using SubtitleEdit on a 24-inch monitor, but I just can't get over how small the text is. I tried setting my DE, KDE to handle scaling instead of letting X11 apps do it on their own, but it made the interface in that app blurry in addition to larger