.NET Tools Bridge
May 30, 2025 ยท View on GitHub
Transform Windsurf into a powerful .NET Framework development environment
.NET Tools Bridge is a comprehensive Windsurf extension that bridges the gap between modern code editors and .NET Framework development by integrating the best available language servers, build tools, and debuggers.
๐ฏ Why .NET Tools Bridge?
.NET Framework development in modern editors has been fragmented and unreliable. This extension solves that by:
- ๐ Automatically detecting and configuring .NET development tools
- โก Providing intelligent fallbacks when tools are missing
- ๐ ๏ธ Offering guided installation for missing components
- ๐ง Supporting multiple language servers (Roslyn, OmniSharp) based on availability
- ๐ฆ Working across platforms with appropriate tool detection
Instead of cryptic "tool not found" errors, you get one-click setup and clear guidance.
๐๏ธ Architecture & Components
Language Servers (IntelliSense)
Our priority order for C# language support:
-
๐ฅ C# Extension (muhammad-sammy) - Recommended
- Comprehensive C# support with OmniSharp integration
- Available on Open VSX marketplace
- Better compatibility with non-Microsoft editors
-
๐ฅ Microsoft C# Extension - Fallback
- Official Microsoft extension with OmniSharp
- Full-featured but Microsoft marketplace dependent
-
๐ฅ Standalone OmniSharp - Last Resort
- Command-line OmniSharp installation via
dotnet tool - Manual setup required but universally compatible
- Command-line OmniSharp installation via
-
๐ฏ Roslyn Language Server - Windows Only
- Uses Visual Studio's actual Roslyn language server
- Premium experience with full .NET Framework support
- Automatically detected from VS installations
Build Systems
- MSBuild - Primary build system, detected from:
- Visual Studio installations (Windows)
dotnet buildcommand (cross-platform)- Mono MSBuild (macOS/Linux)
Debugging
- Mono Debugger - Cross-platform .NET Framework debugging
- Built-in .NET Debugger - For modern .NET projects
Platform Detection
- Windows: Real Visual Studio integration via
vswhere.exe - macOS/Linux: Intelligent tool detection and virtual VS environments
๐ Getting Started
Quick Installation
- Install .NET Tools Bridge extension
- Open any .NET project (
.csproj,.sln) - Follow the setup wizard - it will detect and install missing tools automatically
Manual Setup
If you prefer manual control:
# Install .NET SDK (if not present)
# Download from: https://dotnet.microsoft.com/download
# Install OmniSharp globally (fallback option)
dotnet tool install -g omnisharp
# Install recommended C# extension (in Windsurf)
# Search: "muhammad-sammy.csharp"
๐ง Our Recommendations
For Open Source / Cross-Platform Development
Use: C# Extension by muhammad-sammy + OmniSharp
- โ Open VSX compatible
- โ No Microsoft marketplace dependency
- โ Excellent C# support
- โ Works everywhere
For Windows + Visual Studio Users
Use: Roslyn Language Server (automatically detected)
- โ Premium IntelliSense experience
- โ Full .NET Framework support
- โ Same engine as Visual Studio
- โ Zero configuration required
For Corporate/Restricted Environments
Use: Standalone OmniSharp installation
- โ No extension marketplace required
- โ Command-line installation
- โ Predictable and controlled
๐ Commands
All commands start with .NET Tools Bridge::
| Command | Description |
|---|---|
| Setup Wizard | Interactive setup for missing tools |
| Check Missing Tools | Scan and report missing development tools |
| Install .NET Tools | Install missing tools automatically where possible |
| Build Project | Build project using MSBuild |
| Clean Project | Clean build outputs |
| Restore Project | Restore NuGet packages |
| Select Visual Studio Version | Choose VS installation (Windows) |
| Restart Language Server | Restart active language server |
| Configure Custom Tool Paths | Set custom paths for tools |
โ๏ธ Configuration
{
// Language server preference
"vsToolsBridge.languageProviderPreference": "auto", // "auto" | "roslyn" | "omnisharp"
// Visual Studio selection (Windows)
"vsToolsBridge.preferredVSVersion": "latest", // "latest" | "2022" | "2019" | specific version
// Custom tool paths (optional)
"vsToolsBridge.customRoslynPath": "", // Path to Microsoft.CodeAnalysis.LanguageServer.exe
"vsToolsBridge.customMSBuildPath": "", // Path to MSBuild.exe
"vsToolsBridge.customOmniSharpPath": "", // Path to OmniSharp executable
// Behavior
"vsToolsBridge.autoRestart": true, // Auto-restart language server on crash
"vsToolsBridge.skipSetupCheck": false, // Skip automatic setup check
"vsToolsBridge.enableLogging": false // Enable verbose logging
}
๐ Tool Detection Logic
Windows
- Visual Studio Detection: Uses
vswhere.exeto find all VS installations - Roslyn Discovery: Searches VS installations for
Microsoft.CodeAnalysis.LanguageServer.exe - MSBuild Discovery: Locates MSBuild in VS installations (Current โ 17.0 โ 16.0 โ 15.0)
- Extension Fallback: Suggests C# extensions if Roslyn unavailable
macOS/Linux
- Tool Discovery: Searches common paths for
dotnet,mono,omnisharp - Extension Priority: Prioritizes Open VSX compatible extensions
- Package Manager Integration: Suggests Homebrew/apt installations where appropriate
๐ญ Cross-Platform Strategy
| Platform | Primary Language Server | Build System | Debugger |
|---|---|---|---|
| Windows | Roslyn โ OmniSharp | MSBuild (VS) | Mono |
| macOS | OmniSharp โ Extensions | dotnet build | Mono |
| Linux | OmniSharp โ Extensions | dotnet build | Mono |
โก Installation Assistant
The Installation Assistant is our killer feature:
Automatic Detection
- Scans system for .NET SDK, language servers, build tools
- Identifies missing components with clear explanations
- Provides multiple installation options ranked by preference
Guided Installation
- One-click installs where possible (
dotnet tool install) - Step-by-step instructions for manual installations
- Marketplace links for extension installations
- Cancellable operations with proper progress feedback
Smart Recommendations
- Prioritizes Open VSX extensions over Microsoft marketplace
- Suggests appropriate tools based on platform and existing setup
- Explains tradeoffs between different options
๐ ๏ธ Development & Testing
Local Development
git clone <repository>
cd dotnet-tools-bridge
npm install
npm run compile
Testing
npm test # Run all tests
npm run lint # Code quality checks
F5 in Windsurf # Launch Extension Development Host
Manual Testing Scenarios
- Fresh system - No .NET tools installed
- Partial setup - Some tools missing
- Corporate environment - Restricted marketplace access
- Multiple VS versions - Version selection logic
- Cross-platform - macOS/Linux compatibility
๐ Success Criteria
โ Working Extension Should:
- Detect platform correctly (Windows/macOS/Linux)
- Find Visual Studio installations (Windows)
- Suggest appropriate C# extensions in preference order
- Install OmniSharp automatically when possible
- Provide cancellable installation progress
- Handle missing tools gracefully with clear guidance
- Support custom tool paths for corporate environments
โ Common Issues Fixed:
- "Command not found" errors โ Clear installation guidance
- Missing Roslyn โ Automatic OmniSharp fallback
- Hanging installations โ Cancellable progress dialogs
- Platform confusion โ Smart platform-specific recommendations
- Complex setup โ One-click installation assistant
๐ฎ Future Enhancements
- Additional Language Servers: Support for other .NET language servers
- Build System Expansion: Support for other build tools (Cake, FAKE)
- Enhanced Debugging: Integration with additional debuggers
- Project Templates: Scaffolding for common .NET Framework projects
- Performance Monitoring: Language server performance tracking
๐ License
MIT License - See LICENSE file for details
๐ค Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
๐ Support
- GitHub Issues: Bug reports and feature requests
- Discussions: Questions and community support
- Documentation: Check this README and inline code documentation
Making .NET Framework development in Windsurf just work โข