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

Multiple issues trying to invoke directly on macOS #2659

Open
jspawar opened this issue Feb 18, 2025 · 1 comment
Open

Multiple issues trying to invoke directly on macOS #2659

jspawar opened this issue Feb 18, 2025 · 1 comment

Comments

@jspawar
Copy link

jspawar commented Feb 18, 2025

I am having myriad issues getting the LSP to work like at all, particularly for a newly-bootstrapped Unity project.

To start, my current setup (abbreviated, omitting some details that I suspect aren't relevant):

  • .NET SDK 9.0 via https://dotnet.microsoft.com/en-us/download
  • Using omnisharp-osx-arm64-net6.0.tar.gz from the latest release as of writing this (1.39.13)
  • I have tried multiple editors (I am not interested in using VS Code or such):
    • emacs
    • helix

Of note is that I tried using the various mono-based builds/interactions (the omnisharp-mono brew package and the omnisharp-osx release tarballs) and those all failed in a variety of ways, all of which mostly boiling down to being unable to find MSBuild or the standard library for whatever reason. Didn't seem like there was a particularly obvious way either to "just" point omnisharp at whatever .NET I have installed. Namely, would most consistently get the error: Could not locate MSBuild instance to register with OmniSharp. I even tried creating a project-local omnisharp.json with the following to see if that would work, but still nothing:

{"msbuild":{"MSBuildSDKsPath":"/usr/local/share/dotnet/sdk/9.0.200"}}

I have been trying to pour over the source and documentation, yet I see nothing obvious which allows me to just point omnisharp at my installation. Also of course I don't understand why I should even need to with a seemingly standard installation of .NET and its CLIs (e.g. dotnet) confirmed in my path.

So then I switched to using omnisharp-osx-arm64-net6.0.tar.gz and executing the binary via dotnet OmniSharp.dll --languageserver; however, that then fails because Unity generates the project with multiple .csproj files I guess as I get the following error when trying to start the LSP:

"Specify which project file to use because this '<path_to_my_project_directory>' contains more than one project file"

I thought then that perhaps I should point omnisharp at the .sln file, but that then failed with:

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at OmniSharp.Services.OmniSharpEnvironment..ctor(String path, Int32 hostPid, LogLevel logLevel, String[] additionalArguments) in /Users/runner/work/1/s/src/OmniSharp.Host/Services/OmniSharpEnvironment.cs:line 16
   at OmniSharp.CommandLineApplicationExtensions.CreateEnvironment(CommandLineApplication application) in /Users/runner/work/1/s/src/OmniSharp.Host/CommandLineApplicationExtensions.cs:line 12
   at OmniSharp.Stdio.Driver.Program.<>c__DisplayClass0_1.<Main>b__1() in /Users/runner/work/1/s/src/OmniSharp.Stdio.Driver/Program.cs:line 49
   at OmniSharp.CommandLineApplication.<>c__DisplayClass12_0.<OnExecute>b__0() in /Users/runner/work/1/s/src/OmniSharp.Host/CommandLineApplication.cs:line 92
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.<>c__DisplayClass143_0.<OnExecute>b__0(CancellationToken _)
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync(String[] args, CancellationToken cancellationToken)
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
   at OmniSharp.CommandLineApplication.Execute(String[] args) in /Users/runner/work/1/s/src/OmniSharp.Host/CommandLineApplication.cs:line 65
   at OmniSharp.Stdio.Driver.Program.<>c__DisplayClass0_0.<Main>b__0() in /Users/runner/work/1/s/src/OmniSharp.Stdio.Driver/Program.cs:line 84
   at OmniSharp.HostHelpers.Start(Func`1 action) in /Users/runner/work/1/s/src/OmniSharp.Host/HostHelpers.cs:line 30

Which is particularly strange because if I run omnisharp without supplying --languageserver, it starts up just fine and doesn't run into this error. Which makes me suspect that there is potentially a bug in how .sln files are parsed/used.

All else then that I can find in the way of support or documentation or previous user experiences is tied to using VS Code or the editor extensions within this org. Given that, it seems like omnisharp is not actually meant to be invoked standalone as I am trying and is only supported through those extensions? I'm not particularly a big fan of that; however, I can understand if that's just how things are. I would ask though that is made more explicit in documentation then please.

@jspawar
Copy link
Author

jspawar commented Feb 18, 2025

Especially of note is that I switched to using .NET 8 with omnisharp to no avail. However, I tried .NET 8 with https://github.com/razzmatazz/csharp-language-server and it worked fine. From my understanding, given that csharp-language-server can parse and use the .sln file without issue and the errors I saw above from omnisharp, I suspect there indeed is some sort of bug with omnisharp's parsing or interpreting of .sln files.

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

1 participant