Darkraise 1.0.1

dotnet add package Darkraise --version 1.0.1
                    
NuGet\Install-Package Darkraise -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Darkraise" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Darkraise" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Darkraise" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Darkraise --version 1.0.1
                    
#r "nuget: Darkraise, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Darkraise@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Darkraise&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Darkraise&version=1.0.1
                    
Install as a Cake Tool

Darkraise

The core of the Darkraise Framework — a modular .NET 10 application framework written against the BCL alone. No third-party packages, so nothing arrives transitively with it.

dotnet add package Darkraise

What's inside

Area Types
Dependency injection ServiceContainer (IServiceRegistry + IServiceResolver), scopes, keyed and factory registrations, LazyService<T>
Data access IBoundedContext, IRepository<T> (extends IQueryable<T>), change interceptors, ChangeSet
CQRS and business actions IDispatcher, IQueryHandler<,>, ICommandHandler<>, Business<TContext>.Action<,>, audit interceptors
Logging ISimpleLogger with console, file and debug sinks, text and JSON formatters, enrichers
Background jobs IJobClient / IJobServer, cron scheduling, recurring and continuation jobs, file-backed storage
HTTP and networking IRestClient with a fluent request builder, auth handlers, retry policies, proxy rotation, route tracing, DNS
Mail Raw SMTP client over TcpClient + SslStream — plaintext, STARTTLS and implicit TLS
Telegram Bot API client, update polling, command dispatch, inline keyboard builder
Text HTML parsing with XPath, INI, EPUB read/write, structured text, encryption
Windows automation Windows, elements, input, screen capture, OCR, triggers, dialogs, registry, processes
MVVM DarkraiseScreen, IConductor / OneActiveConductor, RelayCommand, IUIDispatcher — UI-framework agnostic
Settings and config IApplicationSettings<T>, IAppConfig<T> with JSON and INI providers

Also: ActionResult<T> / OperationResult<T> result types, pagination, debouncing, pause and interruption tokens, and Git repository helpers.

Quick start

using Darkraise.DependencyInjection;
using Darkraise.Logging;

var container = new ServiceContainer();
container.AddSingleton<IMyService, MyService>();
container.AddLogging(b => b.MinimumLevel(LogLevel.Debug).AddConsoleSink().AddFileSink("logs/app.log"));

var service = container.GetRequiredService<IMyService>();
using var scope = container.CreateScope();

CQRS

container.AddCqrs(typeof(GetUserHandler).Assembly);

var dispatcher = container.GetRequiredService<IDispatcher>();
var user = await dispatcher.Query(new GetUserQuery(userId));
await dispatcher.Execute(new CreateUserCommand(data));

Background jobs

container.AddJobs(o => o.WorkerCount = 4)
         .ConfigureFileStorage(f => f.Directory = "data/jobs")
         .AddJob<SendDigestJob>();

await container.GetRequiredService<IJobServer>().StartAsync();

var jobs = container.GetRequiredService<IJobClient>();
await jobs.EnqueueAsync<SendDigestJob>();
await jobs.AddRecurringAsync<SendDigestJob>("daily", CronExpression.Predefined.Daily);

REST client

using var client = new RestClient(o => o.BaseUrl = new Uri("https://api.example.com"));

var users = await client.Get("users").AddQueryParameter("page", "1").AcceptJson().ExecuteAsync<UserList>();
var created = await client.Post("users").WithJsonBody(new { Name = "Alice" }).WithBearerToken(token).ExecuteAsync<User>();

Requirements

Targets net10.0 and runs anywhere .NET 10 does. The Darkraise.Automation namespace wraps Win32 APIs and only functions on Windows — the rest of the library is platform-neutral.

License

MIT. See LICENSE.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Darkraise:

Package Downloads
Darkraise.Win32UI

Pure Win32/Direct2D desktop UI framework: 90+ themed controls, fluent builder API, MVVM, data binding, NativeAOT compatible, zero third-party dependencies.

Darkraise.WpfEx

WPF application framework: custom MVVM (screens, conductors, view locator), light/dark theming with 15 accents, themed control styles, dialogs, ~1900 Lucide icons, and animation helpers.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 102 8/15/2026
1.0.0 98 8/15/2026