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

omnisharp-roslyn cannot find Microsoft.Common.props #126477

Closed
felschr opened this issue Jun 10, 2021 · 19 comments · Fixed by #132165
Closed

omnisharp-roslyn cannot find Microsoft.Common.props #126477

felschr opened this issue Jun 10, 2021 · 19 comments · Fixed by #132165

Comments

@felschr
Copy link
Member

felschr commented Jun 10, 2021

Describe the bug
When running omnisharp I get an error that project loading failed due to a missing file:

{"Event":"log","Body":{"LogLevel":"INFORMATION","Name":"OmniSharp.MSBuild.ProjectManager","Message":"Loading project: /home/felschr/dev/work/project/Api/Api.csproj"},"Seq":147,"Type":"event"}
{"Event":"log","Body":{"LogLevel":"WARNING","Name":"OmniSharp.MSBuild.ProjectManager","Message":"Failed to load project file '/home/felschr/dev/work/project/Api/Api.csproj'."},"Seq":148,"Type":"event"}
{"Event":"Error","Body":{"Text":"Microsoft.Build.Exceptions.InvalidProjectFileException: The imported project \"/nix/store/pw1ic8h00a9k2c5j1786ivq7zqrc59cb-omnisharp-roslyn-1.37.8/src/.msbuild/Current/Microsoft.Common.props\" was not found. Confirm that the expression in the Import declaration \"/nix/store/pw1ic8h00a9k2c5j1786ivq7zqrc59cb-omnisharp-roslyn-1.37.8/src/.msbuild/Current/Microsoft.Common.props\" is correct, and that the file exists on disk.  /nix/store/ycw6rph7kyff988mqk56qyf5q7qwidqc-dotnet-core-combined/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props\n  at Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject (System.String errorSubCategoryResourceName, Microsoft.Build.Shared.IElementLocation elementLocation, System.String resourceName, System.Object[] args) [0x00040] in <9be4d26643704d2e91efa63e9f29e6b0>:0 \n  at Microsoft.Build.Shared.ProjectErrorUtilities.VerifyThrowInvalidProject[T1,T2] (System.Boolean condition, System.String errorSubCategoryResourceName, Microsoft.Build.Shared.IElementLocation elementLocation, System.String resourceName, T1 arg0, T2 arg1) [0x00003] in <9be4d26643704d2e91efa63e9f29e6b0>:0

The path /nix/store/pw1ic8h00a9k2c5j1786ivq7zqrc59cb-omnisharp-roslyn-1.37.8/src/.msbuild/Current/Microsoft.Common.props does not seem to exist on my system.
There is only one folder in /nix/store/pw1ic8h00a9k2c5j1786ivq7zqrc59cb-omnisharp-roslyn-1.37.8/src/.msbuild/Current, which is called Bin.

Expected behavior
omnisharp should not throw an error and work as expected.

Additional context
omnisharp.json:

{
  "MsBuild": {
    "UseLegacySdkResolver": true,
    "EnablePackageAutoRestore": true
  },
  "FormattingOptions": {
    "EnableEditorConfigSupport": true
  },
  "RoslynExtensionsOptions": {
    "EnableAnalyzersSupport": true
  }
}

Additionally, I've set the environment variables DOTNET_ROOT, MSBuildSdksPath & MSBUILD_EXE_PATH to the respective paths of my dotnet installation.

Notify maintainers
@tesq0 @ericdallo @corngood

Metadata

 - system: `"x86_64-linux"`
 - host os: `Linux 5.12.7, NixOS, 21.11.20210606.fbfb794 (Porcupine)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.4pre20210601_5985b8b`
 - channels(root): `"nixos-21.11pre291991.ea7d4aa9b82"`
 - channels(felschr): `"nixpkgs-unstable-21.11pre291991.ea7d4aa9b82"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Maintainer information:

# a list of nixpkgs attributes affected by the problem
attribute: omnisharp-roslyn
# a list of nixos modules affected by the problem
module:
@felschr
Copy link
Member Author

felschr commented Jun 10, 2021

I tried overriding the installPhase to copy Microsoft.Common.props from omnisharp to the output (since I couldn't find it in the output of msbuild):

    installPhase = ''
      mkdir -p $out/bin
      cd ..
      cp -r src $out/
      rm -r $out/src/.msbuild
      cp -r ${msbuild}/lib/mono/msbuild $out/src/.msbuild

      chmod -R u+w $out/src
      mv $out/src/.msbuild/Current/{bin,Bin}
      
      # this line is new:
      cp -r src/.msbuild/Current/Microsoft.Common.props $out/src/.msbuild/Current

      makeWrapper ${mono}/bin/mono $out/bin/omnisharp \
      --add-flags "$out/src/OmniSharp.exe"
    '';

I don't get the original error anymore, but now omnisharp fails with Method not found: string NuGet.Frameworks.NuGetFramework.get_Platform():

{"Event":"log","Body":{"LogLevel":"INFORMATION","Name":"OmniSharp.MSBuild.ProjectManager","Message":"Loading project: /home/felschr/dev/work/project/Api/Api.csproj"},"Seq":216,"Type":"event"}
{"Event":"log","Body":{"LogLevel":"ERROR","Name":"OmniSharp.MSBuild.ProjectLoader","Message":"The \"ProcessFrameworkReferences\" task failed unexpectedly.\nSystem.MissingMethodException: Method not found: string NuGet.Frameworks.NuGetFramework.get_Platform()\n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferences.<ExecuteCore>b__105_1 (Microsoft.NET.Build.Tasks.ProcessFrameworkReferences+KnownFrameworkReference kfr) [0x00008] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at System.Linq.Enumerable+WhereEnumerableIterator`1[TSource].ToList () [0x0001b] in <9ba54d07696a449db4a4279fc05aa435>:0 \n  at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <9ba54d07696a449db4a4279fc05aa435>:0 \n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferences.ExecuteCore () [0x00063] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at Microsoft.NET.Build.Tasks.TaskBase.Execute () [0x0002e] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () [0x00029] in <355f0eeef3fc4a388d46eeb88cc51b2b>:0 \n  at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) [0x002b9] in <355f0eeef3fc4a388d46eeb88cc51b2b>:0 "},"Seq":217,"Type":"event"}
{"Event":"log","Body":{"LogLevel":"WARNING","Name":"OmniSharp.MSBuild.ProjectManager","Message":"Failed to load project file '/home/felschr/dev/work/project/Api/Api.csproj'."},"Seq":218,"Type":"event"}
{"Event":"MsBuildProjectDiagnostics","Body":{"FileName":"/home/felschr/dev/work/project/Api/Api.csproj","Warnings":[],"Errors":[{"LogLevel":"Error","FileName":"/nix/store/ycw6rph7kyff988mqk56qyf5q7qwidqc-dotnet-core-combined/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets","Text":"The \"ProcessFrameworkReferences\" task failed unexpectedly.\nSystem.MissingMethodException: Method not found: string NuGet.Frameworks.NuGetFramework.get_Platform()\n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferences.<ExecuteCore>b__105_1 (Microsoft.NET.Build.Tasks.ProcessFrameworkReferences+KnownFrameworkReference kfr) [0x00008] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at System.Linq.Enumerable+WhereEnumerableIterator`1[TSource].ToList () [0x0001b] in <9ba54d07696a449db4a4279fc05aa435>:0 \n  at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <9ba54d07696a449db4a4279fc05aa435>:0 \n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferences.ExecuteCore () [0x00063] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at Microsoft.NET.Build.Tasks.TaskBase.Execute () [0x0002e] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () [0x00029] in <355f0eeef3fc4a388d46eeb88cc51b2b>:0 \n  at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) [0x002b9] in <355f0eeef3fc4a388d46eeb88cc51b2b>:0 ","StartLine":63,"StartColumn":5,"EndLine":0,"EndColumn":0}]},"Seq":219,"Type":"event"}

@corngood
Copy link
Contributor

Could you share the project you're using to reproduce this?

Also, I'm locally using this change: #126487, which may be worth trying.

@felschr
Copy link
Member Author

felschr commented Jun 10, 2021

Ah, in the PR you're also copying ${msbuild}/lib/mono/xbuild/Current to the output which contains the missing Microsoft.Common.props. Unfortunately, if I do the same in my installPhase override, I still get the NuGetFramework.get_Platform() not found error.

I can't share the entire project. Perhaps the project's shell.nix might help (reduced to the relevant parts):

let sources = import ./nix/sources.nix;

in { pkgs ? import sources.nixpkgs { } }:

with pkgs;
with lib;

let
  dotnet-combined = with dotnetCorePackages; combinePackages [ sdk_5_0 ];
  dotnetRoot = "${dotnet-combined}";
  dotnetSdk = "${dotnet-combined}/sdk";
  dotnetBinary = "${dotnetRoot}/bin/dotnet";

in mkShell {
  name = "env";
  buildInputs = [ dotnet-combined ];

  shellHook = ''
    export DOTNET_ROOT=${escapeShellArg dotnetRoot}
    local dotnetBase=${escapeShellArg dotnetSdk}/$(${
      escapeShellArg dotnetBinary
    } --version)
    export MSBuildSdksPath=$dotnetBase/Sdks
    export MSBUILD_EXE_PATH=$dotnetBase/MSBuild.dll
  '';
}

I also tried disabling UseLegacySdkResolver and removing MSBuildSdksPath & MSBUILD_EXE_PATH and I still get the same NuGetFramework.get_Platform() error.

@felschr
Copy link
Member Author

felschr commented Jun 10, 2021

I was able to reproduce this issue with a new .NET project created by dotnet new console.
Here's the project including the entire dotnet & omnisharp config:
https://github.com/felschr/omnisharp-nix-issue

@hpfr
Copy link

hpfr commented Jul 23, 2021

The PR mentioned before has been merged now; maybe that will help you @felschr ?

@felschr felschr closed this as completed Jul 30, 2021
@felschr
Copy link
Member Author

felschr commented Jul 30, 2021

So, first of all I noticed that omnisharp was partially working before. The autocompletion seemed to mostly work for local variables & basic system libraries (e.g. string.Compare) but everything from NuGet & types from local project imports weren't autocompleted.
After upgrading to the new nixpkgs build of omnisharp (1.37.12) this seems to have remained the same.

I noticed some new errorrs in the omnisharp output. I don't think I've had these before:

{"Event":"log","Body":{"LogLevel":"ERROR","Name":"OmniSharp.MSBuild.ProjectLoader","Message":"This project targets .NET 5.0 but the currently used MSBuild is not compatible with it - MSBuild 16.8+ is required. To
solve this, run OmniSharp on its embedded Mono (e.g. 'omnisharp.useGlobalMono':'never' in C# Extension for VS Code) or, if running on global Mono installation, make sure at least Mono 6.13 is installed on your mac
hine (https://mono-project.com/download/). Alternatively, add 'omnisharp.json' to your project root with the setting { \"msbuild\": { \"useBundledOnly\": true } }."},"Seq":225,"Type":"event"}

I've updated https://github.com/felschr/omnisharp-nix-issue with the new omnisharp. E.g. in Controllers/WeatherForecastController.cs trying to access any properties on _logger will not autocomplete, for the same reason using Microsoft.Extensions.Logging; also can't be autocompleted. The Microsoft namespace only has a single member completed: Microsoft.Win32.

note: sorry for the closing, reopening & multiple messages. GitHub showed me some popup that I couldn't close, and I accidentally closed the issue somehow while trying to close the popup 😅.

@felschr felschr reopened this Jul 30, 2021
@felschr
Copy link
Member Author

felschr commented Jul 30, 2021

Adding "msbuild": { "useBundledOnly": true } to my omnisharp.json like suggested in the error message doesn't seem to have any effect. I'm still getting the same error.
Looks like mono is out of date, though. The error says it needs mono 6.13 while nixpkgs currently ships with 6.12.
UPDATE: interesting, mono 6.13 doesn't even been released as far as I can see. The error message must be wrong.

@corngood
Copy link
Contributor

We do have msbuild 16.8, but that doesn't seem to be sufficient. msbuild in nixpkgs is the same thing that's used by omnisharp-roslyn, so I tried to build it:

➜  omnisharp-nix-issue git:(main) nix run nixpkgs.msbuild -c msbuild                                                                                                                                                                                                                               ~/src/omnisharp-nix-issue
Microsoft (R) Build Engine version 16.8.0-ci-21270-01 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 30/07/2021 09:31:45.
Project "/home/david/src/omnisharp-nix-issue/omnisharp-nix-issue.csproj" on node 1 (default targets).
/nix/store/h9rgjz3ybkh24cvdkb8364ddl0ak6v0n-msbuild-16.8+xamarinxplat.2020.07.30.15.02/lib/mono/msbuild/Current/bin/Microsoft.Common.CurrentVersion.targets(1194,5): error MSB3644: The reference assemblies for .NETFramework,Version=v5.0 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks [/home/david/src/omnisharp-nix-issue/omnisharp-nix-issue.csproj]

I'm not sure about the reference assemblies. We could try upgrading mono, but perhaps there's another way to acquire them?

@corngood
Copy link
Contributor

I tried upgrading mono to 6.13 nightly, but it doesn't have .net 5 assemblies in lib/mono/xbuild-frameworks.

@felschr
Copy link
Member Author

felschr commented Jul 30, 2021

I thought MSBuildSdksPath is used to find those reference assemblies but it doesn't seem to work, at least in my setup.

So, I tried passing my specific dotnet package to omnisharp-roslyn to see if it can find the assemblies that way:

  omnisharp-roslyn =
    pkgs.omnisharp-roslyn.override { dotnet-sdk = dotnet-combined; };

This seems to allow omnisharp to find the SDK assemblies, but now it complains about Method not found: string NuGet.Frameworks.NuGetFramework.get_Platform() again.

{"Event":"log","Body":{"LogLevel":"ERROR","Name":"OmniSharp.MSBuild.ProjectLoader","Message":"The \"ProcessFrameworkReferences\" task failed unexpectedly.\nSystem.MissingMethodException: Method not found: string N
uGet.Frameworks.NuGetFramework.get_Platform()\n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferences.<ExecuteCore>b__105_1 (Microsoft.NET.Build.Tasks.ProcessFrameworkReferences+KnownFrameworkReference kfr) [0x
00008] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at System.Linq.Enumerable+WhereEnumerableIterator`1[TSource].ToList () [0x0001b] in <9ba54d07696a449db4a4279fc05aa435>:0 \n  at System.Linq.Enumerable.ToList[TSou
rce] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <9ba54d07696a449db4a4279fc05aa435>:0 \n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferences.ExecuteCore () [0x00063] in <c1a29c5daf134e4b
a6d73cbbae7974d1>:0 \n  at Microsoft.NET.Build.Tasks.TaskBase.Execute () [0x0002e] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHos
t.Execute () [0x00029] in <f3272346bd8f4581a546074d6bb7075f>:0 \n  at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.Back
End.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) [0x002b9] in <f3
272346bd8f4581a546074d6bb7075f>:0 "},"Seq":21,"Type":"event"}
{"Event":"log","Body":{"LogLevel":"WARNING","Name":"OmniSharp.MSBuild.ProjectManager","Message":"Failed to load project file '/home/felschr/dev/work/omnisharp-nix-issue/omnisharp-nix-issue.csproj'."},"Seq":22,"Typ
e":"event"}
{"Event":"MsBuildProjectDiagnostics","Body":{"FileName":"/home/felschr/dev/work/omnisharp-nix-issue/omnisharp-nix-issue.csproj","Warnings":[],"Errors":[{"LogLevel":"Error","FileName":"/nix/store/8qcd1d8lynh3b0a7z2
9xv5grfbm03slj-dotnet-core-combined/sdk/5.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets","Text":"The \"ProcessFrameworkReferences\" task failed unexpectedly.\nSystem.M
issingMethodException: Method not found: string NuGet.Frameworks.NuGetFramework.get_Platform()\n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferences.<ExecuteCore>b__105_1 (Microsoft.NET.Build.Tasks.ProcessFra
meworkReferences+KnownFrameworkReference kfr) [0x00008] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at System.Linq.Enumerable+WhereEnumerableIterator`1[TSource].ToList () [0x0001b] in <9ba54d07696a449db4a4279fc05a
a435>:0 \n  at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <9ba54d07696a449db4a4279fc05aa435>:0 \n  at Microsoft.NET.Build.Tasks.ProcessFrameworkReferen
ces.ExecuteCore () [0x00063] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at Microsoft.NET.Build.Tasks.TaskBase.Execute () [0x0002e] in <c1a29c5daf134e4ba6d73cbbae7974d1>:0 \n  at Microsoft.Build.BackEnd.TaskExecut
ionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () [0x00029] in <f3272346bd8f4581a546074d6bb7075f>:0 \n  at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExec
utionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.Tas
kExecutionMode howToExecuteTask) [0x002b9] in <f3272346bd8f4581a546074d6bb7075f>:0 ","StartLine":63,"StartColumn":5,"EndLine":0,"EndColumn":0}]},"Seq":23,"Type":"event"}

@corngood
Copy link
Contributor

Yeah, there's some interaction between msbuild and the dotnet sdk that I don't fully understand. Just investigating...

@felschr
Copy link
Member Author

felschr commented Jul 30, 2021

I think msbuild is supposed to find the reference assemblies from installed dotnet SDKs.
Makes sense to not bundle all assemblies with msbuild if only some versions are used.

But I also don't understand how it's trying to find those files and how omnisharp might interfere with that.
There are just much weird behaviour and so many options, I'm utterly confused by the entire thing.

I think to avoid having to override omnisharp-roslyn we should remove the --prefix PATH : ${dotnet-sdk}/bin \ part.
This allows us to remove the entire dotnet-sdk dependency, which is good since it might not even be the version users need and would just bloat the nix store.

@corngood
Copy link
Contributor

it was needed in $PATH because it expects the dotnet command to be available.

OmniSharp/omnisharp-roslyn#2058

@felschr
Copy link
Member Author

felschr commented Jul 30, 2021

I still think it should be up to the user to make sure it's in the PATH. Usually when installing dotnet it via nix-env, NixOS or home-manager that should happen automatically.
I don't think it makes much sense to use omnisharp-roslyn standalone, anyway.

@corngood
Copy link
Contributor

I don't use the dotnet sdk at all for my project, so I don't want it in my environment, but without it in the PATH for omnisharp, omnisharp will currently fail. If they support running omnisharp without it, I agree that it should be removed.

@felschr
Copy link
Member Author

felschr commented Jul 30, 2021

I'd be fine with using pkgs.dotnet-sdk as the default as long as it's possible to easily replace it either via arguments or by adding a different dotnet sdk to PATH. I'm not even sure why using --prefix prevents omnisharp to find my own dotnet installation.
Ideally, both of those options would be possible without needing to rebuild omnisharp-roslyn.

I've just found this dotnet/roslyn#53906 (comment) regarding the NuGet error.
We might just have to update the NuGet.Frameworks nuget package to fix the error.
It seems to currently be at 5.7.0-rtm.6710: https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/tools/build-managers/msbuild/deps.nix#L418
I tried updating that file but the script is complaining about a missing NuGet.config:

❯ ./create-deps.sh
{ fetchurl }: [
failed to load external entity "NuGet.config"
find: ‘.packages’: No such file or directory
find: ‘fake-home/.nuget/packages’: No such file or directory

@corngood
Copy link
Contributor

I just pushed #132165 with some changes that seem to fix your test project, and still work on my project.

I still get a null-ref exception if I remove the $PATH entry for the sdk, but I upgraded it to .net 5, and I made it a suffix, which should allow it to be overridden.

I had to upgrade msbuild to fix the nuget conflicts between the dotnet sdk and msbuild, and then upgrade nuget in omnisharp-roslyn to the same version.

@felschr
Copy link
Member Author

felschr commented Aug 1, 2021

Oh, wow. It really works! At least all the issues with the sample project are fixed.
I think this is the first time I've actually had omnisharp running without issues on NixOS.
Thank you so much for your work on this!

@corngood
Copy link
Contributor

corngood commented Aug 2, 2021

That's great. Thanks for testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants