vs code Problems with C# extension, Some projects have trouble loading due to OmniSharp

Viewed 14759

When I start editing a C# file I get this warning message

Some projects have trouble loading. Please review the output for more details.

I check the output and this is what I find

Starting OmniSharp server at 2/17/2021, 6:06:51 AM
    Target: /Users/zeyad/Documents/Sandbox/CSharpTut

OmniSharp server started with Mono 6.12.0.
    Path: /Users/zeyad/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.7-beta.29/omnisharp/OmniSharp.exe
    PID: 1391

[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on MacOS 10.13.6 (x64)
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 2 MSBuild instance(s)
            1: Mono 16.6.0 - "/Library/Frameworks/Mono.framework/Versions/6.12.0/lib/mono/msbuild/Current/bin"
            2: StandAlone 16.8.0 - "/Users/zeyad/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.7-beta.29/omnisharp/.msbuild/Current/Bin"
[warn]: OmniSharp.CompositionHostBuilder
        It looks like you have Mono installed which contains a MSBuild lower than 16.8.0 which is the minimum supported by the configured .NET Core Sdk.
 Try updating Mono to the latest stable or preview version to enable better .NET Core Sdk support.
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: Mono 16.6.0 - "/Library/Frameworks/Mono.framework/Versions/6.12.0/lib/mono/msbuild/Current/bin"
            CscToolExe = csc.exe
            CscToolPath = /Users/zeyad/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.7-beta.29/omnisharp/.msbuild/Current/Bin/Roslyn
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.Completion.CompletionOptionsProvider, Order: 0
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider, Order: 140
[info]: OmniSharp.Cake.CakeProjectSystem
        Detecting Cake files in '/Users/zeyad/Documents/Sandbox/CSharpTut'.
[info]: OmniSharp.Cake.CakeProjectSystem
        Could not find any Cake files
[info]: OmniSharp.MSBuild.ProjectSystem
        No solution files found in '/Users/zeyad/Documents/Sandbox/CSharpTut'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for '/Users/zeyad/Documents/Sandbox/CSharpTut/Zeyad.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
        Detecting CSX files in '/Users/zeyad/Documents/Sandbox/CSharpTut'.
[info]: OmniSharp.Script.ScriptProjectSystem
        Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
        Configuration finished.
[info]: OmniSharp.Stdio.Host
        Omnisharp server running using Stdio at location '/Users/zeyad/Documents/Sandbox/CSharpTut' on host 1365.
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: /Users/zeyad/Documents/Sandbox/CSharpTut/Zeyad.csproj
[fail]: OmniSharp.MSBuild.ProjectLoader
        This project targets .NET version that requires reference assemblies that do not ship with OmniSharp out of the box (e.g. .NET Framework). The most common solution is to make sure Mono is installed on your machine (https://mono-project.com/download/) and that OmniSharp is started with that Mono installation (e.g. 'omnisharp.useGlobalMono':'always' in C# Extension for VS Code).
[warn]: OmniSharp.MSBuild.ProjectManager
        Failed to load project file '/Users/zeyad/Documents/Sandbox/CSharpTut/Zeyad.csproj'.
/Users/zeyad/Documents/Sandbox/CSharpTut/Zeyad.csproj
/Library/Frameworks/Mono.framework/Versions/6.12.0/lib/mono/msbuild/Current/bin/Microsoft.Common.CurrentVersion.targets(1193,5): Error: This project targets .NET version that requires reference assemblies that do not ship with OmniSharp out of the box (e.g. .NET Framework). The most common solution is to make sure Mono is installed on your machine (https://mono-project.com/download/) and that OmniSharp is started with that Mono installation (e.g. 'omnisharp.useGlobalMono':'always' in C# Extension for VS Code).

[fail]: OmniSharp.MSBuild.ProjectManager
        Attempted to update project that is not loaded: /Users/zeyad/Documents/Sandbox/CSharpTut/Zeyad.csproj
[info]: OmniSharp.Roslyn.CSharp.Services.Diagnostics.CSharpDiagnosticWorkerWithAnalyzers
        Solution initialized -> queue all documents for code analysis. Initial document count: 0.

I checked the solution they wrote solution is to make sure Mono is installed on your machine (https://mono-project.com/download/) and that OmniSharp is started with that Mono installation (e.g. 'omnisharp.useGlobalMono':'always' in C# Extension for VS Code). And it fixed the problem, but the next day the problem occurred again!

Here is what I added in my settings.json

"omnisharp.path": "latest",
"omnisharp.useGlobalMono": "always"

The extensions I have for C# are C# extension and Roslynator.

Is there something missing to completely set up visual studio code for C#? I'm completely new to C# and I would really appreciate any help to get the same smooth feeling as in other programming languages like JavaScript or Golang

Note: I use Mac, but does this make any difference?

7 Answers

Fix that by theses steps:

  1. Update Mono for Mac in: https://mono-project.com/download/
  2. VS Code > C# Enxtension (installed) > Extension setting > search for : omnisharp.useGlobalMono':'always' > set the option to Always

There are two ways to fix that problem.

The first one: Check the version of your C# extension. If you are in 1.25.0, you need to go to the extension settings to set omnisharp.useModernNet to false.

The second: If you are in version 1.25.0, revert your version to 1.24.0. Make sure to set omnisharp.useGlobalMono to always.

This worked for me:

  1. Install latest C# extension
  2. Install latest Mono for MAC: https://mono-project.com/download/
  3. Update VSCode ~/Library/Application Support/Code/User/settings.json as follow:
   {
    ...
    "omnisharp.useGlobalMono": "always",
    "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current"
   }

Don't need "omnisharp.path": "latest" because I don't want the extension check for update every time.

Just a heads-up for those coming from a more recent timeframe. Omnisharp deprecated the useGlobalMono variable for their latest versions. Took me many hours but once I reverted my Omnisharp back to 1.24.0 (from 1.25.0) it all started working again

For the recent version of Omnisharp just uncheck the useModernNet in VS code C# extension setting as shown in the screenshot. enter image description here

Base on the comment from this here, reverting the C# extension solved the problem on a M1 mac. I reverted from C# extension version 1.25.0 to 1.24.4.

I had the same problem on my MacBook pro running MacOS 12.4

To fix it, I had to:

  • download and install the dotnet sdk

  • download and install mono (https://mono-project.com/download/)

  • add both the paths in the termninal

  • running this: sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet where /usr/share/dotnet/dotnet should be replaced with wherever the .NET SDK installer for your platform was installed to

  • add both the paths in ~/.zshrc and source it

  • add both the paths in VSCode (settings -> search for mono and dotnet), get the path by running which mono and which dotnet. You can do this in both the user and the workspace tab. I did both. I also set the sdk path and version specifically.

  • Turn off useModernNet in VSCode

Some of these steps were probably unnecessary or redundant. But only after I tried all of these steps I finally got it to work. This link really helpt me: https://github.com/OmniSharp/omnisharp-vscode/wiki/Troubleshooting:-'The-.NET-Core-SDK-cannot-be-located.'-errors

Related