DotCarbon.Plugins.FileSystem 0.2.8

There is a newer version of this package available.
See the version list below for details.
dotnet add package DotCarbon.Plugins.FileSystem --version 0.2.8
                    
NuGet\Install-Package DotCarbon.Plugins.FileSystem -Version 0.2.8
                    
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="DotCarbon.Plugins.FileSystem" Version="0.2.8" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DotCarbon.Plugins.FileSystem" Version="0.2.8" />
                    
Directory.Packages.props
<PackageReference Include="DotCarbon.Plugins.FileSystem" />
                    
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 DotCarbon.Plugins.FileSystem --version 0.2.8
                    
#r "nuget: DotCarbon.Plugins.FileSystem, 0.2.8"
                    
#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 DotCarbon.Plugins.FileSystem@0.2.8
                    
#: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=DotCarbon.Plugins.FileSystem&version=0.2.8
                    
Install as a Cake Addin
#tool nuget:?package=DotCarbon.Plugins.FileSystem&version=0.2.8
                    
Install as a Cake Tool

<div align="center">

DotCarbon

Build fast, tiny, cross-platform desktop apps with C# and web technologies.

Write your interface with any web framework, your application logic in C#, and ship a single native binary — no runtime to install, no bloat.

NuGet npm .NET License: MIT

</div>


DotCarbon lets you build native desktop applications using the web stack you already know for the UI and the full power of .NET for everything else. Your interface renders in the operating system's built-in web view, and your C# code runs natively alongside it — the two talk over a small, fully typed bridge.

Status: pre-release (0.1.x). The API is still stabilizing and may change between minor versions.

Highlights

  • Single-file apps — The .NET runtime, native webview host, configuration, and compiled frontend ship as one compressed executable.
  • Any frontend — First-class templates for React, Vue, Svelte, Solid, Preact, and Vanilla, all TypeScript + Vite.
  • End-to-end type safety — Your C# commands are projected into TypeScript types, so invoke() calls are autocompleted and checked at compile time.
  • C# backend — Use the entire .NET ecosystem for your application logic, file access, networking, and native OS integration.
  • Built-in capabilities — Clipboard, dialogs, file system, notifications, shell, and window management, available as opt-in plugins.
  • Batteries-included CLI — One command to develop, one to ship.

Quick start

npx @dotcarbon/create-app my-app
cd my-app
carbon dev

Pick a template with --template:

npx @dotcarbon/create-app my-app --template vue

Available templates: react · vue · svelte · solid · preact · vanilla.

carbon dev starts your frontend dev server and the C# host together with live reload. When you're ready to distribute, carbon build compiles a native app into out/.

Requirements

Tool Version Notes
.NET SDK 10+ Runs the host and the CLI
Node.js 18+ With pnpm, npm, bun, or yarn
carbon CLI latest dotnet tool install -g DotCarbon.Cli

The scaffolder detects the carbon CLI and offers to install it for you if it's missing.

How it works

A DotCarbon app is two halves that share one window:

my-app/
├─ carbon.json          app, window, and build configuration
├─ carbon.schema.json   schema for carbon.json (editor autocomplete)
├─ src-carbon/          C# backend — the host and your commands
│  └─ Program.cs
└─ ui/                  web frontend (Vite)
   └─ src/

The C# host loads your web UI into the native OS web view. The frontend and backend communicate through a bridge: the frontend calls a command by name, a C# method handles it, and the typed result is returned as a promise.

Calling C# from the frontend

Define a command in C# — mark a method with [CarbonCommand] inside a plugin:

// src-carbon/Program.cs
using DotCarbon.Core.Bridge;
using DotCarbon.Core.Config;
using DotCarbon.Core.Host;
using DotCarbon.Core.Plugins;

var config = ConfigLoader.Load();

new CarbonHost(config)
    .WithPlugin(new AppCommands())
    .Run();

public record GreetRequest(string Name);

public partial class AppCommands : IPlugin
{
    public string Namespace => "app";

    [CarbonCommand("greet")]
    public string Greet(GreetRequest req) => $"Hello, {req.Name}!";
}

Call it from the frontend with a fully typed invoke:

import { invoke } from '@dotcarbon/api'

const message = await invoke('app:greet', { name: 'World' })
// message: string  →  "Hello, World!"

Run carbon types to (re)generate ui/src/carbon.d.ts from your commands — arguments and return values become real TypeScript types, so typos and mismatched payloads are caught before you run.

CLI

Command Description
carbon dev Run the frontend and C# host together with live reload
carbon build Compile a native, self-contained app into out/
carbon types Generate carbon.d.ts from your [CarbonCommand] methods

Configuration

Everything about your app lives in carbon.json, validated by the bundled schema:

{
  "$schema": "./carbon.schema.json",
  "app": {
    "name": "my-app",
    "version": "0.1.0",
    "identifier": "com.example.my-app"
  },
  "window": {
    "title": "my-app",
    "width": 1200,
    "height": 800,
    "resizable": true,
    "center": true
  },
  "build": {
    "devCommand": "npm run dev",
    "buildCommand": "npm run build",
    "devUrl": "http://localhost:5173",
    "frontendDist": "ui/dist",
    "backendProject": "src-carbon"
  }
}

The window section supports size and position, minWidth/minHeight, resizable, fullscreen, maximized, alwaysOnTop, decorations, transparent, devtools, contextMenu, and icon.

Building for production

carbon build

By default this produces one compressed, trimmed, self-contained executable with the frontend and carbon.json embedded. The operating system's webview is reused, so no browser engine ships with the app.

NativeAOT is available as an experimental size/startup option, but Photino's native library currently remains beside the executable:

carbon build --aot

Target another platform with --target (e.g. --target win-x64, --target linux-x64, --target osx-arm64).

Installers and platform packages are opt-in so the normal output directory stays one file:

carbon build --bundle

Plugins

Native capabilities are opt-in — add the C# package, register the plugin, and call it from the frontend through its matching JS module.

Capability NuGet package Frontend module
Clipboard DotCarbon.Plugins.Clipboard @dotcarbon/plugin-clipboard
Dialogs DotCarbon.Plugins.Dialog @dotcarbon/plugin-dialog
File system DotCarbon.Plugins.FileSystem @dotcarbon/plugin-fs
Notifications DotCarbon.Plugins.Notification @dotcarbon/plugin-notification
Shell DotCarbon.Plugins.Shell @dotcarbon/plugin-shell
Window DotCarbon.Plugins.Window @dotcarbon/plugin-window

Packages

Package Registry Description
@dotcarbon/create-app npm Project scaffolder
@dotcarbon/api npm Frontend bridge SDK (invoke)
DotCarbon.Cli NuGet The carbon command-line tool (dotnet tool)
DotCarbon.Core NuGet Host runtime, configuration, and the command bridge
DotCarbon.Plugins.* NuGet Native capability plugins

Contributing

Contributions are welcome. This is early-stage software, so issues, ideas, and pull requests all help. Please open an issue to discuss significant changes before starting work.

License

Released under the MIT 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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.7.0 81 7/21/2026
0.6.4 88 7/16/2026
0.6.3 92 7/14/2026
0.6.2 95 7/14/2026
0.6.1 81 7/14/2026
0.6.0 89 7/14/2026
0.5.1 95 7/12/2026
0.4.0 93 7/11/2026
0.3.1 96 7/11/2026
0.3.0 99 7/10/2026
0.2.10 96 7/10/2026
0.2.9 89 7/10/2026
0.2.8 88 7/10/2026
0.2.7-test 84 7/10/2026
0.2.6 95 7/10/2026
0.2.5 90 7/10/2026
0.2.4 95 7/10/2026
0.2.3 83 7/10/2026
0.2.2 91 7/10/2026
0.2.1 101 7/10/2026
Loading failed