Skip to content

DNAKode/vbnet-lsp

Repository files navigation

VB.NET Language Support

Open-source VB.NET language tooling built around Roslyn:

  • A VS Code extension: VB.NET Language Support
  • Standalone language server binaries for non-VS Code LSP clients
  • Thin editor adapters for non-VS Code clients (Neovim, Emacs)

License: MIT

Choose How To Use It

1. VS Code extension (recommended for most users)

2. Standalone language server binaries (non-VS Code clients)

Install as a global .NET tool (recommended):

dotnet tool install --global DNAKode.VbNet.Lsp

Or download from GitHub Releases:

  • Releases: https://github.com/DNAKode/vbnet-lsp/releases
  • Language server artifacts:
    • vbnet-language-server-win-x64.zip
    • vbnet-language-server-linux-x64.tar.gz
    • vbnet-language-server-osx-x64.tar.gz
    • vbnet-language-server-osx-arm64.tar.gz
  • VSIX artifacts:
    • vbnet-language-support-win32-x64.vsix
    • vbnet-language-support-linux-x64.vsix
    • vbnet-language-support-darwin-x64.vsix
    • vbnet-language-support-darwin-arm64.vsix

Use these with any LSP client that supports stdio or named pipes.

3. Editor adapters (thin wrappers)

Use editor-native adapters that launch the standalone language server:

  • Neovim adapter source: adapters/nvim/vbnet-lsp.nvim
  • Emacs eglot adapter source: adapters/emacs/vbnet-eglot

Packaging guidance for native channels is documented in docs/editor-packaging.md.

What You Get

  • Roslyn-backed semantic analysis and project loading (.sln, .slnf, .slnx, .vbproj)
  • Core language features: diagnostics, completion, hover, definition, references, rename, symbols
  • Advanced navigation: type definition, implementation, call hierarchy, type hierarchy
  • Editing support: formatting, semantic tokens, signature help, folding ranges
  • Debugger integration in the VS Code extension via bundled netcoredbg

Current implementation details and roadmap are tracked in PROJECT_PLAN.md and docs/features.md.

Quick Start

VS Code

  1. Install the extension from the Marketplace.
  2. Open a folder containing a .sln or .vbproj.
  3. Start coding in .vb files.

Useful commands:

  • VB.NET: Select Workspace Solution
  • VB.NET: Show Logs
  • VB.NET: Toggle LSP Trace
  • VB.NET: Reload Workspace

Non-VS Code (LSP client)

  1. Install the global tool (dotnet tool install --global DNAKode.VbNet.Lsp) or download and extract the server artifact for your platform from Releases.
  2. Configure your editor/client to launch the server with --stdio.

Examples:

# Global tool
vbnet-ls --stdio

# Linux/macOS (app host)
./VbNet.LanguageServer --stdio

# Linux/macOS/Windows (dotnet host)
dotnet VbNet.LanguageServer.dll --stdio

# Windows (app host)
VbNet.LanguageServer.exe --stdio

The server also supports --pipe (named pipe transport), --logLevel, and --msbuildPath.

Prerequisites

  • .NET SDK 10.0 or later
  • For VS Code extension development: Node.js 18+
  • For VS Code users: VS Code 1.80+

Notes:

  • Dev containers / SSH / WSL are supported if .NET SDK is available in the runtime environment.
  • VS Code Web (vscode.dev / github.dev) is not supported.

Release Automation

GitHub Actions release automation is available in .github/workflows/release.yml and publishes:

  • Platform-specific standalone language server archives
  • Platform-specific VSIX packages
  • A GitHub Release containing all artifacts

The dotnet tool package (DNAKode.VbNet.Lsp, command: vbnet-ls) is built in .github/workflows/publish-dotnet-tool.yml and published to NuGet when NUGET_API_KEY is configured.

Editor adapters are validated separately in .github/workflows/editor-adapters.yml and are intended for editor-native distribution channels (for example, Neovim plugin managers and MELPA/package-vc for Emacs).

Downstream snapshot sync guidance (adapters + Claude plugin) is documented in docs/downstream-repositories.md.

The release workflow runs on tag push (v*) and can also be run manually with workflow_dispatch.

Backend Model

The extension supports backend selection:

  • vbnet (default)
  • roslyn

Only one backend is active at a time by design (single active backend) to reduce regression risk.

For Roslyn packaging constraints (.roslyn + .roslyn-vb split), see docs/roslyn-packaging.md.

Documentation

Development and Testing

Build from source:

dotnet build src/VbNet.LanguageServer.Vb
dotnet test
cd src/extension && npm ci && npm run compile

For full workflows and exploratory harnesses, see:

Contributing

Issues, bug reports, docs improvements, and code contributions are welcome.

License

MIT - see LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •