VB.NET Language Support - User Configuration
Version: 1.1 Last Updated: 2026-01-22
VB.NET Language Support is configured primarily through VS Code settings. All settings can be modified in:
- UI: File > Preferences > Settings > Extensions >
VB.NETLanguage Support - JSON:
.vscode/settings.json(workspace) or User Settings (global)
VB.NET: Select Workspace Solution— choose a.sln/.slnf/.slnxfile and updatevbnet.workspace.solutionPath. Pick "Auto-detect" to clear the override.VB.NET: Show Logs— opens the main output channel and the LSP trace channel.VB.NET: Toggle LSP Trace— togglesvbnet.trace.serverbetweenoffandverbose.VB.NET: Restore Workspace— runsdotnet restoreusing the selected solution (or workspace root).VB.NET: Restore Project— picks a.vbprojfile and runsdotnet restorefor it.VB.NET: Run Tests— runsdotnet testusing the active.vbcontext, selected solution, or project.VB.NET: Debug Tests (Preview)— runsdotnet testand notes that debug attach is not yet implemented.VB.NET: Reload Workspace— requests a workspace reload without restarting the extension.VB.NET: Attach Debugger to Process— picks a running process and starts an attach session.
The extension contributes file nesting patterns so common VB artifacts are grouped in the
Explorer (for example, .Designer.vb, .g.vb, .g.i.vb, .generated.vb, .AssemblyInfo.vb,
and My*.vb under their primary .vb file). You can override these defaults via
explorer.fileNesting.patterns in your settings.
Type: boolean
Default: true
Description: Enable/disable the VB.NET language server
{
"vbnet.enable": true
}Type: enum
Values: "trace", "debug", "info", "warn", "error"
Default: "info"
Description: Language server logging level
{
"vbnet.logLevel": "info"
}Usage:
trace: Maximum verbosity (for debugging LSP protocol)debug: Internal state changes and detailed operationsinfo: Lifecycle events, project loading (recommended)warn: Recoverable errors onlyerror: Critical errors only
Type: enum
Values: "off", "messages", "verbose"
Default: "off"
Description: LSP message tracing
{
"vbnet.trace.server": "off"
}Usage:
off: No LSP tracingmessages: Log LSP request/response namesverbose: Log full LSP message content
View traces: "View > Output" > "VB.NET Language Support"
Type: string
Default: "" (use bundled server)
Description: Override the language server binary path. Recommended only for local development.
{
"vbnet.server.path": "C:\\path\\to\\VbNet.LanguageServer.dll"
}Note: Prefer setting this in workspace settings when developing the server. For a new user experience, leave it unset so the extension uses the bundled server.
Type: enum
Values: "vbnet", "roslyn"
Default: "vbnet"
Description: Select which language server backend to launch.
{
"vbnet.server.backend": "vbnet"
}Notes:
vbnetuses the bundled VB.NET language server (current default).roslynuses the Roslyn language server with VB assemblies loaded via extension path.
Type: string
Default: "" (use bundled Roslyn server)
Description: Override the Roslyn language server binary path.
{
"vbnet.roslyn.server.path": "C:\\path\\to\\Microsoft.CodeAnalysis.LanguageServer.dll"
}Type: string
Default: ""
Description: Directory containing Roslyn VB extension assemblies (Microsoft.CodeAnalysis.VisualBasic*.dll).
{
"vbnet.roslyn.server.extensionPath": "C:\\path\\to\\roslyn-vb-extension"
}Type: boolean
Default: true
Description: Enable document formatting
{
"vbnet.enableFormatting": true
}Type: boolean
Default: true
Description: Enable code actions and quick fixes
{
"vbnet.enableCodeActions": true
}Type: boolean
Default: true
Description: Enable semantic syntax highlighting
{
"vbnet.semanticTokens": true
}Note: Requires Phase 2 implementation. Disabled in MVP.
Type: boolean
Default: false
Description: Enable inline type and parameter hints
{
"vbnet.inlayHints": false
}Note: Deferred pending stable Roslyn public APIs.
Launch configuration note: Debugging requires a program path to a compiled .dll. If you omit it, the extension will attempt to infer it when a matching bin/Debug/**/<Assembly>.dll is found; if multiple .vbproj files are present, you’ll be prompted to choose. You can also use placeholders like <target-framework> and <project-name> (e.g., ${workspaceFolder}/bin/Debug/<target-framework>/<project-name>.dll).
Project hinting: You can set projectPath in your launch configuration to point at a .vbproj and let the extension infer the program path.
Type: string
Default: ""
Description: Path to the netcoredbg executable. Leave empty to use the bundled debugger (or PATH when running from source).
{
"vbnet.debugger.path": "C:\\tools\\netcoredbg\\netcoredbg.exe"
}Type: string[]
Default: []
Description: Extra command line arguments passed to netcoredbg (for example, --engineLogging=/tmp/netcoredbg.log).
{
"vbnet.debugger.args": ["--engineLogging=C:\\temp\\netcoredbg.log"]
}Type: enum
Values: "openChange", "openSave", "saveOnly"
Default: "openChange"
Description: When to update diagnostics
{
"vbnet.diagnosticsMode": "openChange"
}Modes:
openChange: Update on file open and every change (with debouncing)openSave: Update on file open and save onlysaveOnly: Update only when file is saved
Type: integer
Range: 0 - 5000
Default: 300
Description: Debounce delay (ms) for diagnostics updates
{
"vbnet.debounceMs": 300
}Tuning:
- Lower (100-200ms): Faster feedback, higher CPU usage
- Higher (500-1000ms): Slower feedback, lower CPU usage
- 0: No debouncing (not recommended)
Type: string
Default: "" (auto-detect)
Description: Explicit path to a .sln file. Leave empty to auto-detect.
{
"vbnet.workspace.solutionPath": "${workspaceFolder}/MySolution.sln"
}Type: boolean
Default: false
Description: Ignore .sln files and load .vbproj files directly (solution-less mode).
{
"vbnet.workspace.ignoreSolutionFiles": true
}Type: string[]
Default: [] (workspace root)
Description: Directories to scan for .vbproj files when not loading a solution.
{
"vbnet.workspace.projectSearchPaths": [
"test/TestProjects/MediumProject"
]
}Type: string[]
Default: ["_external", "test-explore", "build", "node_modules", ".git", ".vscode"]
Description: Directory names to exclude when scanning for .vbproj files.
{
"vbnet.workspace.excludePaths": [
"_external",
"test-explore",
"build"
]
}Type: string
Default: null (auto-detect)
Description: Legacy setting; use vbnet.workspace.solutionPath instead.
Type: string
Default: "**/node_modules/**,**/.git/**,**/bower_components/**"
Description: Comma-separated glob patterns used by the extension when searching for solutions/projects.
{
"vbnet.workspace.projectFilesExcludePattern": "**/_external/**,**/test-explore/**,**/node_modules/**,**/.git/**"
}Type: number
Default: 250
Description: Maximum number of .vbproj files to consider when no solution is present.
Type: boolean
Default: true
Description: Load projects during initialization
{
"vbnet.loadProjectsOnStart": true
}Note: Setting to false defers project loading until first file is opened.
Type: integer
Default: 100
Description: Maximum number of projects to load
{
"vbnet.maxProjectCount": 100
}Usage: Prevents excessive memory usage on very large solutions.
Type: string
Default: null (auto-detect via MSBuild.Locator)
Description: Explicit MSBuild path override
{
"vbnet.msbuildPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100\\MSBuild.dll"
}Usage: Set if MSBuild auto-detection fails or you need a specific version.
Type: integer
Default: 2048
Description: Maximum memory usage (MB) before warning
{
"vbnet.maxMemoryMB": 2048
}Note: Language server will log warnings if this threshold is exceeded.
{
"vbnet.debounceMs": 500,
"vbnet.diagnosticsMode": "openSave",
"vbnet.maxProjectCount": 150,
"vbnet.logLevel": "warn"
}{
"vbnet.debounceMs": 100,
"vbnet.diagnosticsMode": "openChange",
"vbnet.logLevel": "info"
}{
"vbnet.debounceMs": 1000,
"vbnet.diagnosticsMode": "saveOnly",
"vbnet.maxMemoryMB": 1024,
"vbnet.semanticTokens": false
}Symptoms: No IntelliSense, no diagnostics
Check:
- "View > Output" > "
VB.NETLanguage Support" for errors - Verify .NET SDK is installed:
dotnet --version - Restart VS Code
Solution:
{
"vbnet.logLevel": "debug"
}Check output panel for startup errors.
Symptoms: “VB.NET debugging requires a program path” or “debug program not found”.
Check:
- Build the project (
dotnet buildor VS Code build task). - Confirm the output DLL path under
bin/Debug/<target-framework>/. - Optionally set
projectPathinlaunch.jsonso the extension can inferprogram.
Solution:
{
"type": "vbnet",
"request": "launch",
"name": "`VB.NET` Launch",
"projectPath": "${workspaceFolder}/YourProject.vbproj"
}Symptoms: Long delays for completion/hover
Check:
- Solution size (too many projects?)
- Memory usage (Task Manager / Activity Monitor)
Solution:
{
"vbnet.debounceMs": 500,
"vbnet.maxProjectCount": 50
}Symptoms: Errors don't appear or are stale
Check:
vbnet.diagnosticsModesetting- File is saved (if using
saveOnlymode)
Solution:
{
"vbnet.diagnosticsMode": "openChange",
"vbnet.debounceMs": 300
}Symptoms: "Project load failed" in output
Check:
- .NET SDK version matches project target framework
- MSBuild can load project:
dotnet build YourProject.vbproj
Solution:
{
"vbnet.msbuildPath": "/path/to/specific/MSBuild.dll"
}Symptoms: "Visual Basic not supported" or missing reference assemblies for net4x targets.
Check (Windows):
- Install the .NET Framework targeting packs or Visual Studio Build Tools.
- Set
vbnet.msbuildPathto a full MSBuild (from Visual Studio/Build Tools). - If targeting packs are unavailable, add
Microsoft.NETFramework.ReferenceAssembliesto the project.
Check (non-Windows):
- SDK-style net4x targets are not supported. Retarget to modern .NET or build on Windows.
Tip: If restores are missing, use "VB.NET: Restore Workspace" or "VB.NET: Restore Project".
Symptoms: VS Code sluggish, high CPU in Task Manager
Check:
vbnet.debounceMsis too lowvbnet.diagnosticsModeisopenChangewith large files
Solution:
{
"vbnet.debounceMs": 1000,
"vbnet.diagnosticsMode": "openSave"
}Symptoms: Language server using >2GB RAM
Check:
- Solution size (how many projects?)
- Number of open files
Solution:
{
"vbnet.maxProjectCount": 50,
"vbnet.maxMemoryMB": 1024
}Or close unused files and restart language server:
- Command Palette: "
VB.NET: Restart Language Server"
VB.NET Language Support respects .editorconfig files for formatting:
# .editorconfig
root = true
[*.vb]
indent_style = space
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = trueSupported properties:
indent_style(space, tab)indent_size(number)end_of_line(lf, crlf)charset(utf-8, utf-16)trim_trailing_whitespace(true, false)insert_final_newline(true, false)
For multi-root workspaces, configure per folder:
// .code-workspace
{
"folders": [
{
"path": "ProjectA",
"settings": {
"vbnet.solutionPath": "${workspaceFolder}/ProjectA.sln"
}
},
{
"path": "ProjectB",
"settings": {
"vbnet.solutionPath": "${workspaceFolder}/ProjectB.sln"
}
}
]
}Note: Multi-root workspace support is Phase 4 feature.
VB.NET Language Support uses Roslyn analyzers from:
- Project
<PackageReference>to analyzers - Global
.globalconfigfile
Example .globalconfig:
is_global = true
# Severity overrides
dotnet_diagnostic.CA1001.severity = warning
dotnet_diagnostic.CA2007.severity = none// .vscode/settings.json (workspace)
{
// `VB.NET` Language Support
"vbnet.enable": true,
"vbnet.logLevel": "info",
"vbnet.solutionPath": "${workspaceFolder}/MySolution.sln",
"vbnet.debounceMs": 300,
"vbnet.diagnosticsMode": "openChange",
// Editor preferences
"editor.formatOnSave": true,
"editor.formatOnType": false,
// File associations
"files.associations": {
"*.vb": "vb"
},
// Auto-save
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 1000
}When upgrading to new versions, configuration may change. Check release notes for:
- Deprecated settings
- New settings
- Changed defaults
Advanced users can set environment variables for the language server:
# Linux/macOS
export VBNET_LS_LOG_LEVEL=Trace
export VBNET_LS_MAX_MEMORY_MB=4096
# Windows (PowerShell)
$env:VBNET_LS_LOG_LEVEL="Trace"
$env:VBNET_LS_MAX_MEMORY_MB="4096"Additional environment variables (Roslyn backend):
# Linux/macOS
export VBNET_ROSLYN_SERVER_PATH=/path/to/Microsoft.CodeAnalysis.LanguageServer.dll
export VBNET_ROSLYN_EXTENSION_PATH=/path/to/roslyn-vb-extension
# Windows (PowerShell)
$env:VBNET_ROSLYN_SERVER_PATH="C:\\path\\to\\Microsoft.CodeAnalysis.LanguageServer.dll"
$env:VBNET_ROSLYN_EXTENSION_PATH="C:\\path\\to\\roslyn-vb-extension"Note: VS Code settings override environment variables.
If configuration issues persist:
- Check output panel: "View > Output" > "
VB.NETLanguage Support" - Enable debug logging:
"vbnet.logLevel": "debug" - Restart language server: Command Palette > "
VB.NET: Restart Language Server" - Check GitHub issues: https://github.com/DNAKode/vbnet-lsp/issues
- Ask for help: https://github.com/DNAKode/vbnet-lsp/discussions
Last Updated: 2026-01-22
Maintained by: VB.NET Language Support Contributors