VS Sharp is a custom rebuild of VSCodium (the FLOSS rebuild of Microsoft VS Code) tailored as a dedicated C# / .NET IDE. It pairs VS Code's editor with a Rider/Visual-Studio-class .NET workflow β Solution Explorer, multi-profile run/debug, JetBrains-style chrome β using only MIT-licensed sources.
It is not a from-scratch fork. We follow VSCodium's pattern: rebuild Microsoft's MIT-licensed vscode source with custom patches, branding, and bundled extensions. All customizations live in a separate vssharp/ tree so upstream sync stays manageable.
C# / .NET development on VS Code today funnels users into Microsoft's proprietary C# Dev Kit, whose license restricts use to official VS Code builds. VS Sharp ships a 100% open-source alternative:
| You want⦠| VS Sharp gives you⦠|
|---|---|
| Roslyn-powered C# IntelliSense | DotRush LSP bundled as built-in (no marketplace install) |
Rider-style Solution Explorer with .sln parsing |
VS Sharp Explorer webview, JetBrains New UI icons |
Run/Debug from launchSettings.json like Visual Studio |
VS Sharp Runner β multi-profile, concurrent sessions |
| JetBrains visual identity without trademark assets | VS Sharp color theme + VS Sharp file icons (JetBrains SVGs) + custom product-icon font built from JetBrains intellij-community expui SVGs |
| FLOSS-only stack, telemetry off | Inherited from VSCodium |
| Customize and rebrand for your own org | apply-branding.sh + apply-logo.sh |
A custom webview panel that replaces VS Code's default file explorer. Two tabs in one container:
- Solution tab β parses
.sln/.slnxdirectly (self-implemented, no MSBuild dependency). Renders:- Solution root with project count (e.g.
VN_MYCLUB sln Β· 43 projects) - Solution folders nested as the
.slnsays - Projects with their type glyphs (Web / Library / Console, etc.)
- Expand a project β list source files grouped by folder
Properties/andwwwroot/pinned to top of each project (matches Rider)
- Solution root with project count (e.g.
- Files tab β plain workspace tree (escape hatch when you need raw files outside the solution graph)
- Eye toggle β show/hide non-project files (bin, obj, .git, .DS_Store, dot-files, configurable
vssharp.explorer.hiddenPatterns) - JetBrains New UI icons β file icons from
vssharp-iconsextension (JetBrains expui SVGs, Apache 2.0). Dark and light variants follow the workbench theme automatically viavssharp-file-icontheme - Context menu actions β New File / Folder, Rename, Delete, Duplicate, Copy Relative/Absolute Path, Reveal in Finder, Open in Terminal, Manage NuGet Packages, Build / Clean / Restore / Run / Test (per-project)
- Right-click on solution β Add New Project, Add Existing Project, New Solution Folder, Run Multiple Projects, Publish, Properties
Implementation: vssharp/extensions/vssharp-explorer/src/{sln-parser,csproj-parser,explorer-tree-provider,webview-provider}.ts (each file < 200 LOC, modular).
VS Sharp Runner reads every Properties/launchSettings.json in the workspace and surfaces every profile as a first-class action. No more .vscode/launch.json boilerplate for standard ASP.NET / .NET projects.
Activity bar β "VS Sharp Run" panel
- Hierarchy: Project β Profile tree view
- Each profile shows inline action buttons: βΆ run Β· π debug Β· βΉ stop (state-aware: shows only βΆ when stopped, only βΉ when running)
- Description line per profile shows live state:
βΆ 3m Β· Development Β· http://localhost:5000 - Tooltip (Markdown) shows command kind, applicationUrl, environment vars, working directory, session start time
- Icon color-coded:
- star (purple) β profile selected as default for this project
- circle (muted) β other profiles in the same project
- play (green) β running session
- bug (red) β debugging session
- Header actions: refresh / stop-all
- Project node shows count of running sessions
Editor title bar
- Two icons appear at top-right of any editor: βΆ and π
- Click β detects the
.csprojcontaining the focused file - Resolves profile in this order:
- Profile last chosen for that project (per-project memory)
- First profile declared in
launchSettings.json - Globally selected profile (fallback when the file isn't in any project)
Status bar
- Live counter
βΆ N runningshown on the left when any session is alive - Click β QuickPick of running sessions to stop selectively
Keybindings (active when a profile is resolvable and not already in a debug session)
F5β debug current file's projectCtrl+F5/Cmd+F5β run current file's project (no debugger)
Concurrency model
- One session per profile (clicking βΆ on an already-running profile warns "stop first")
- Multiple different profiles can run/debug simultaneously
- Each session gets its own dedicated terminal panel β output never gets interleaved
- Debug sessions launch via VS Code's debug API, attach DotRush debugger automatically for C#
Concrete example
β Both profiles appear in the VS Sharp Run tree. You can debug Main.API (Dev) and simultaneously run Main.API (Staging) to compare behavior across environments. Each opens its own terminal.
DotRush (MIT) ships pre-bundled β Roslyn workspace, IntelliSense, code actions, .NET debugger, all without any marketplace install or Microsoft account. Pinned at a known-good commit via vssharp/dotrush.UPSTREAM.txt. Local patches in vssharp/dotrush.patches/ (e.g. NU1903 security advisory demoted from build-blocker to warning).
- JetBrains Mono font as default
editor.fontFamily(falls through to Menlo if not installed βbrew install --cask font-jetbrains-monoto enable) - JetBrains color theme (
vssharp-color-theme, MIT) set as default for both dark and light - VS Sharp Product Icons β custom product-icon theme built in-tree (
vssharp-product-iconsextension). The icon font is generated from JetBrainsintellij-communityexpui SVGs (Apache 2.0) viapicosvg + fantasticon: 271 codicons β 135 JetBrains New UI glyphs, mapped throughbuild/codicon-map.json. Rebuild vianode vssharp/extensions/vssharp-product-icons/build/build.mjs - Rider feel defaults β line-height 1.5, breadcrumbs on, indent guides always, sticky scroll, tree indent 16px, single-click folder expand, custom title bar, auto-save 500ms, no minimap, font ligatures on, smooth caret animation. ~40 keys total registered via
configurationRegistry.registerDefaultConfigurationsso they sit at the lowest precedence β yoursettings.jsonalways wins - Watermark / letterpress β empty editor area shows VS Sharp logo, theme-tinted (dark logo on light bg, white logo on dark bg, high-contrast variants for HC themes)
Default Explorer hidden completely
VS Code's default file explorer (and Run/Debug viewlet) are moved to AuxiliaryBar with no icon, no command, no toggle β effectively invisible. VS Sharp Explorer is the only file browser. Container registration is preserved so third-party extensions that reference contributes.views.explorer (npm-scripts, git, etc.) keep working.
viewsContainers schema extended with an optional order field so VS Sharp extensions can slot before built-in containers. Default activity bar order:
| Order | Container |
|---|---|
| 0 | VS Sharp Explorer |
| 1 | VS Sharp Run |
| 2 | Source Control |
| 4 | Extensions |
| 6 | Testing |
User drag-drop is still respected and persisted to workspace storage.
| Layer | VS Sharp customization |
|---|---|
| Branding | VS Sharp name, com.vssharp bundle ID, vssharp CLI/protocol, custom logo |
| Built-in extensions | DotRush (Roslyn LSP + .NET debugger); VS Sharp Runner; VS Sharp Explorer; VS Sharp Icons (file icon theme); VS Sharp Color Theme (default dark + light); VS Sharp Product Icons (custom font) |
| Icon set | File icons: vssharp-icons extension β JetBrains expui SVGs (Apache 2.0), 148 SVGs, dark + light. Product icons: custom font built from JetBrains intellij-community expui SVGs |
| Color theme | JetBrains New UI color theme (vssharp-color-theme, default dark + light) |
| Default Explorer | Hidden (moved to AuxiliaryBar, no UI surface). VS Sharp Explorer replaces it |
| Default Run/Debug viewlet | Hidden β replaced by VS Sharp Run activity bar entry |
| Activity bar order | VS Sharp Explorer first, VS Sharp Run second, then built-ins |
| Rider-like defaults | ~40 settings pre-tuned (font, line-height, breadcrumbs, sticky scroll, custom title bar, auto-save, no minimap, ...) |
| Watermark | VS Sharp logo with theme-aware tinting |
| Marketplace | Open VSX (inherited from VSCodium) |
| Telemetry | Disabled (inherited from VSCodium) |
vscodium/ # repo root (still named vscodium from upstream)
βββ upstream/{stable,insider}.json # pinned MS vscode commit
βββ patches/ # ~50 VSCodium patches (FLOSS rebrand + telemetry off)
β βββ user/ # VS Sharp source patches (auto-applied by prepare_vscode.sh)
β βββ 00-vssharp-hide-default-explorer.patch
β βββ 00-vssharp-hide-debug-viewlet.patch
β βββ 00-vssharp-default-themes.patch # color + product-icon defaults
β βββ 00-vssharp-rider-defaults.patch # ~40 Rider-feel settings
β βββ 00-vssharp-editor-title-only-run-debug.patch
β βββ 00-vssharp-codicon-font-fallback.patch
β βββ vssharp-viewPaneContainer.patch # Explorer tabs/tree layout lock
β βββ vssharp-viewsExtensionPoint.patch # order field for view containers
β βββ vssharp-viewDescriptorService.patch # suppress per-view toggles
βββ src/{stable,insider}/ # VSCodium resource overlay (icons, plist, letterpress)
βββ vssharp/ # VS Sharp customizations
β βββ vscode-overrides/ # override TS/CSS sources β patches/user/ via gen-patches.sh
β βββ gen-patches.sh # rebuild patches/user/vssharp-*.patch from overrides
β βββ extend-prepare.sh # bundle vssharp/extensions/* β vscode/extensions/
β βββ install-dotrush.sh # clone DotRush at pinned commit + build
β βββ dotrush.UPSTREAM.txt # pinned commit
β βββ dotrush.patches/ # local DotRush patches
β βββ extensions/
β βββ dotrush/ # (gitignored) fetched by install-dotrush.sh
β βββ vssharp-color-theme/ # JetBrains New UI color theme (dark + light)
β βββ vssharp-icons/ # JetBrains file icon theme (148 SVGs, expui, Apache 2.0)
β β βββ build/build-theme.mjs # generates vssharp-file-icons.json + theme.json
β β βββ media/icons/ # source SVGs (dotnet/ + jetbrains/expui/)
β βββ vssharp-product-icons/ # custom product-icon font built from JetBrains expui SVGs
β β βββ build/ # build.mjs (picosvg + fantasticon) + codicon-map.json
β β βββ icons/expui/ # source SVGs from intellij-community (Apache 2.0)
β β βββ producticons/ # generated .woff2 + manifest
β βββ vssharp-runner/ # custom: launchSettings.json runner
β βββ vssharp-explorer/ # custom: Solution|Files tree view
βββ apply-version.sh # fix vscode/package.json version
βββ apply-branding.sh # rewrite product.json β "VS Sharp"
βββ apply-logo.sh <png> # embed PNG into 5 SVG slots (workbench + 4 letterpress)
βββ env.local.sh # source per terminal (nvm + venv + env vars)
βββ run-app.sh # launch helper (strips NODE_OPTIONS for Electron)
βββ docs/howto-run-dev.md # full dev guide
Full setup + usage guide: docs/howto-run-dev.md.
# Tools
brew install jq python@3.11
source ~/.nvm/nvm.sh && nvm install 22.22.1
dotnet tool install --global Cake.Tool # to build DotRush
# Once
/opt/homebrew/opt/python@3.11/bin/python3.11 -m venv .venv
source ./env.local.sh
# Pipeline (~25 min first time)
. ./get_repo.sh
. ./prepare_vscode.sh # also auto-applies patches/user/*.patch
./apply-version.sh
./apply-branding.sh
./apply-logo.sh /path/to/your-logo.png
# Fetch + build 3rd-party extensions (pinned in vssharp/*.UPSTREAM.txt)
./vssharp/install-dotrush.sh # ~5 min, needs .NET SDK
# Build vssharp-* custom extensions
( cd vssharp/extensions/vssharp-runner && npm install && npm run compile )
( cd vssharp/extensions/vssharp-explorer && npm install && npm run compile )
# Copy all bundled extensions into vscode/extensions/
./vssharp/extend-prepare.sh
# Dev β two terminals
# T1: source ./env.local.sh && cd vscode && npm run watch
# T2: ./run-app.shIn-app: Cmd+R to reload after editing vscode/src/... or any built extension.
Don't edit vscode/ directly β it's a build artifact, reset by prepare_vscode.sh. Instead:
# 1. Edit (or create) the modified file under the mirror tree
$EDITOR vssharp/vscode-overrides/src/vs/workbench/.../yourFile.ts
# 2. Regenerate patch + apply to vscode/ in one shot
./vssharp/gen-patches.sh
# β writes patches/user/vssharp-yourFile.patch AND copies to vscode/
# 3. npm watch picks up the change β Cmd+R to reloadVerified on macOS arm64. Linux / Windows should work (VSCodium's build scripts handle them) but the VS Sharp customizations haven't been validated on those yet β patches for cross-platform issues welcome.
./dev/build.sh -s -p
open VSCode-darwin-arm64/VSCodium.app # name still "VSCodium" until full rebrand of dev/build.shβ Never run ./dev/build.sh without -s β it deletes vscode/ and all customizations.
VS Sharp's own code is MIT β see LICENSE.
The build pipeline redistributes the following third-party sources. All are
permissive (MIT). Attribution notices ship inside the relevant subtrees
(e.g. vssharp/extensions/vssharp-explorer/media/icons/NOTICE.md, each
extension's LICENSE).
| Source | License | Used as |
|---|---|---|
| Microsoft VS Code | MIT | base editor β rebuilt from source, pinned via upstream/stable.json |
| VSCodium | MIT | rebuild scripts + patches (telemetry off, OSS-only branding) |
| Electron | MIT | runtime (bundled by VS Code build) |
| Node.js | MIT | runtime + build toolchain |
| Source | License | Bundle location |
|---|---|---|
| JaneySprings/DotRush | MIT | vssharp/extensions/dotrush/ (fetched + built by install-dotrush.sh, pinned commit in vssharp/dotrush.UPSTREAM.txt) |
| Source | License | Bundle location |
|---|---|---|
| JetBrains/intellij-community β platform/icons expui | Apache 2.0 | vssharp/extensions/vssharp-icons/media/icons/ (148 SVGs β file icon theme) and vssharp/extensions/vssharp-product-icons/icons/expui/ (source for product-icon font) |
VS Sharp Runner, VS Sharp Explorer, VS Sharp Icons, VS Sharp Color Theme, VS Sharp Product Icons (font build), branding scripts, install scripts, source patches in patches/user/, dev tooling β all MIT (this repo's LICENSE).
Bundled icons are functional glyphs only. No JetBrains brand assets (Rider,
IntelliJ IDEA, ReSharper, JetBrains corporate logos) are redistributed β those
are trademarks of JetBrains s.r.o. and excluded from all bundles. The expui
SVGs ship as part of the open-source intellij-community project (Apache 2.0)
and are functional UI glyphs only, not protected marks.
- VSCodium β the FLOSS rebuild infrastructure that makes this fork possible
- Microsoft VS Code β the editor itself (MIT source)
- JaneySprings/DotRush β open-source Roslyn-based C# language server + debugger
- JetBrains intellij-community β expui SVG glyphs (Apache 2.0). Used as source artwork for both the VS Sharp file icon theme (148 SVGs) and the VS Sharp Product Icons font (codicon-mapped)
- JetBrains Mono font (Apache 2.0) β not bundled, but VS Sharp's default
editor.fontFamilyfalls through to it when installed (brew install --cask font-jetbrains-mono)
