Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about state and future of omnisharp #2663

Closed
Anakael opened this issue Mar 18, 2025 · 4 comments
Closed

Question about state and future of omnisharp #2663

Anakael opened this issue Mar 18, 2025 · 4 comments

Comments

@Anakael
Copy link
Contributor

Anakael commented Mar 18, 2025

Hi! I wanted to ask about current state and future of omnisharp project

I've found out that vscode-csharp dropped omnisharp in favor of built-in language-server:
dotnet/vscode-csharp#5708
so I have following questions:

  1. What purposes of that decision? And what are benefits of writing C# language server in typescript?
  2. What does it mean for omnisharp?
    I see basically the same contributors in both projects that's why I'm asking.
    Image

I see big milestone here
#2647
, but I also see silence in contribution for 2 months https://github.com/OmniSharp/omnisharp-roslyn/commits/master/

  1. If vscode-csharp is most supported LS for C#, are there any plans to make it vscode independent to be able to be used is neovim?
    Because now it's kind of sad situation for C# developers that use neovim:
    Omnisharp has high severity bug: InlayHint error #2655,
    but there are no mature alternatives to use
@JoeRobich
Copy link
Member

I've found out that vscode-csharp dropped omnisharp in favor of built-in language-server

OmniSharp is no longer the default, but is still available as an option.

  1. What purposes of that decision?

Microsoft wants to provide an LSP for their language so they packaged it into their VS Code extension.

And what are benefits of writing C# language server in typescript?

The Roslyn language server is written in C#. See https://github.com/dotnet/roslyn/tree/main/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer

  1. What does it mean for omnisharp?

OmniSharp is a community project with a very small community. It will make progress slowly. Contributions are welcome.

I see big milestone here #2647, but I also see silence in contribution for 2 months

When I have time to contribute, that is what I will be working towards. I would love to think I will get there before .NET 10 is released.

  1. If vscode-csharp is most supported LS for C#, are there any plans to make it vscode independent to be able to be used is neovim?

vscode-csharp is the VS Code C# extension. There are similar extensions for neovim which use the new Roslyn language server, such as https://github.com/seblyng/roslyn.nvim.

@Anakael
Copy link
Contributor Author

Anakael commented Mar 18, 2025

Thanks for quick reply!

-> There are similar extensions for neovim which use the new Roslyn language server, such as https://github.com/seblyng/roslyn.nvim
I've come across this some time ago, but couldn't find it now. I'll give it a try.

-> new Roslyn language server
So, do I understand it correctly that Roslyn LS is alternative to omnisharp LS that use own implementation which is https://github.com/OmniSharp/csharp-language-server-protocol/tree/master ?
If so, what comparison between them?

@JoeRobich
Copy link
Member

do I understand it correctly that Roslyn LS is alternative to omnisharp LS that use own implementation

Yes, they both implement language servers for the C# language and they both use the Roslyn APIs to provide these language services.

The OmniSharp LSP implementation is at https://github.com/OmniSharp/omnisharp-roslyn/tree/master/src/OmniSharp.LanguageServerProtocol and wraps the OmniSharp O# Protocol handlers from https://github.com/OmniSharp/omnisharp-roslyn/tree/master/src/OmniSharp.Roslyn.CSharp/Services. The LSP framework it is built on is at https://github.com/OmniSharp/csharp-language-server-protocol.

The Roslyn LSP implementation is at https://github.com/dotnet/roslyn/tree/main/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer. The LSP framework it is built on is at https://github.com/dotnet/roslyn/tree/main/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework.

If so, what comparison between them?

The OmniSharp LS using the O# protocol provides a very similar core language server experience to the Roslyn LSP. Below I will note some of the Pros of each.

O# LS Pros:
The project system supports load project on demand which defers loading projects until source files from those projects are open.
The project system supports loading C# script and Cake files.

Roslyn LSP Pros:
The project system is faster and better at staying in sync with changes from outside the editor.
The analyzer runner is faster.
There are developer resources dedicated to fixing bugs and improving the experience.

Separately OmniSharp using LSP leaves a lot to be desired. See dotnet/vscode-csharp#5429

@Anakael
Copy link
Contributor Author

Anakael commented Mar 19, 2025

Thank you very much for the explanation!

@Anakael Anakael closed this as completed Mar 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants