Skip to content

tieuanhquoc/vsSharp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,878 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


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.


Why VS Sharp

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

Features at a glance

Solution Explorer (Rider-style, two-tab webview)

A custom webview panel that replaces VS Code's default file explorer. Two tabs in one container:

  • Solution tab β€” parses .sln / .slnx directly (self-implemented, no MSBuild dependency). Renders:
    • Solution root with project count (e.g. VN_MYCLUB sln Β· 43 projects)
    • Solution folders nested as the .sln says
    • Projects with their type glyphs (Web / Library / Console, etc.)
    • Expand a project β†’ list source files grouped by folder
    • Properties/ and wwwroot/ pinned to top of each project (matches Rider)
  • 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-icons extension (JetBrains expui SVGs, Apache 2.0). Dark and light variants follow the workbench theme automatically via vssharp-file-icon theme
  • 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).

Profile-based Run / Debug (Rider / Visual Studio parity)

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 .csproj containing the focused file
  • Resolves profile in this order:
    1. Profile last chosen for that project (per-project memory)
    2. First profile declared in launchSettings.json
    3. Globally selected profile (fallback when the file isn't in any project)

Status bar

  • Live counter β–Ά N running shown 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 project
  • Ctrl+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

// Properties/launchSettings.json
{
  "profiles": {
    "Main.API (Dev)": {
      "commandName": "Project",
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:7001",
      "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }
    },
    "Main.API (Staging)": {
      "commandName": "Project",
      "applicationUrl": "https://localhost:7002",
      "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Staging" }
    }
  }
}

β†’ 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 bundled as built-in (no install step)

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-style chrome

  • JetBrains Mono font as default editor.fontFamily (falls through to Menlo if not installed β€” brew install --cask font-jetbrains-mono to 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-icons extension). The icon font is generated from JetBrains intellij-community expui SVGs (Apache 2.0) via picosvg + fantasticon: 271 codicons β†’ 135 JetBrains New UI glyphs, mapped through build/codicon-map.json. Rebuild via node 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.registerDefaultConfigurations so they sit at the lowest precedence β€” your settings.json always 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.

Custom view container ordering

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.


What's different from VSCodium

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)

Project layout

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

Quick start

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.sh

In-app: Cmd+R to reload after editing vscode/src/... or any built extension.

Modify VS Code core sources (the override workflow)

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 reload

Supported platforms

Verified 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.


Build a release .app

./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.


License

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).

Upstream platform

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

Bundled extensions

Source License Bundle location
JaneySprings/DotRush MIT vssharp/extensions/dotrush/ (fetched + built by install-dotrush.sh, pinned commit in vssharp/dotrush.UPSTREAM.txt)

Bundled assets

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)

Custom (this repo)

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).

Notes on trademark

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.


Acknowledgements

  • 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.fontFamily falls through to it when installed (brew install --cask font-jetbrains-mono)

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages