dotnet / vscode-csharp

Official C# support for Visual Studio Code
MIT License
2.86k stars 671 forks source link

Debug symbols not being loaded in new Worker template project #4886

Open KyleC69 opened 2 years ago

KyleC69 commented 2 years ago

Issue Description

Cannot debug projects. Symbols are not being loaded.

Steps to Reproduce

Clean install of Code-insiders and Omnisharp 1.23.16 create new directory and new console app or worker app add default tasks add breakpoint press F5

Expected Behavior

Debugger should stop at breakpoint

Actual Behavior

Project runs and does not load debug symbols but files are created in build dir

Logs

OmniSharp log

Post the output from Output-->OmniSharp log here

C# log

Post the output from Output-->C# here

Environment information

VSCode version: 1.63.0-insider C# Extension: 1.23.16

Mono Information OmniSharp using built-in mono
Dotnet Information .NET SDK (reflecting any global.json): Version: 6.0.100 Commit: 9e8b04bbff Runtime Environment: OS Name: ubuntu OS Version: 21.10 OS Platform: Linux RID: ubuntu.21.10-x64 Base Path: /home/savaho/dotnet/sdk/6.0.100/ Host (useful for support): Version: 6.0.0 Commit: 4822e3c3aa .NET SDKs installed: 3.1.415 [/home/savaho/dotnet/sdk] 6.0.100 [/home/savaho/dotnet/sdk] .NET runtimes installed: Microsoft.AspNetCore.App 3.1.21 [/home/savaho/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.0 [/home/savaho/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.1.21 [/home/savaho/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.0 [/home/savaho/dotnet/shared/Microsoft.NETCore.App] To install additional .NET runtimes or SDKs: https://aka.ms/dotnet-download
Visual Studio Code Extensions |Extension|Author|Version| |---|---|---| |csharp|ms-dotnettools|1.23.16|;

Please paste the output from your clipboard

KyleC69 commented 2 years ago

Still the same after code update, can someone please advise some tips

gregg-miskelly commented 2 years ago

Can you paste the content of the debug console?

KyleC69 commented 2 years ago
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
info: ScraperSvc.Worker[0]
      Worker running at: 11/12/2021 13:30:41 -08:00
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /home/savaho/Documents/codex/ScraperSvc
The program '[18495] ScraperSvc.dll' has exited with code -1 (0xffffffff).
> Executing task: /home/savaho/dotnet/dotnet build /home/savaho/Documents/codex/ScraperSvc/ScraperSvc.csproj /property:GenerateFullPaths=true /consoleloggerparameters:NoSummary <

Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  ScraperSvc -> /home/savaho/Documents/codex/ScraperSvc/bin/Debug/net6.0/ScraperSvc.dll

Terminal will be reused by tasks, press any key to close it.
gregg-miskelly commented 2 years ago

What does your launch.json look like?

KyleC69 commented 2 years ago

That is from an out of the box worker template. 2 breakpoints were set. Debug symbols were not loaded but the PDB files do exist in the build output. I have removed dotnet and code-insiders and re-installed clean. Not sure where to turn next

{
    "version": "0.2.0",
    "configurations": [
        {
            // Use IntelliSense to find out which attributes exist for C# debugging
            // Use hover for the description of the existing attributes
            // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            // If you have changed target frameworks, make sure to update the program path.
            "program": "${workspaceFolder}/bin/Debug/net6.0/ScraperSvc.dll",
            "args": [],
            "cwd": "${workspaceFolder}",
            // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach"
        }
    ]
}
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "/home/savaho/dotnet/dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/ScraperSvc.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "publish",
            "command": "dotnet",
            "type": "process",
            "args": [
                "publish",
                "${workspaceFolder}/ScraperSvc.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "watch",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "run",
                "${workspaceFolder}/ScraperSvc.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}
gregg-miskelly commented 2 years ago

I think maybe I misunderstood your initial comment. Are you saying you are ONLY seeing this problem for worker apps?

gregg-miskelly commented 2 years ago

Also, can you:

  1. Enable logging (instructions). The "Quick Method" should work fine.
  2. Modify your program to add Console.WriteLine(Environment.ProcessId);
  3. Try to debug and add the logs to this issue
KyleC69 commented 2 years ago

No not just worker apps. that was just one test, I'm getting same results from a new console app and several of my other projects. I have even started code with a new user directory (--user-data-dir) and a fresh project same results..

-> (C) {"command":"initialize","arguments":{"clientID":"vscode","clientName":"Visual Studio Code - Insiders","adapterID":"coreclr","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en-us","supportsProgressReporting":true,"supportsInvalidatedEvent":true,"supportsMemoryReferences":true},"type":"request","seq":1}
-> (C) {"command":"launch","arguments":{"name":".NET Core Launch (console)","type":"coreclr","request":"launch","preLaunchTask":"build","program":"/home/savaho/Documents/codex/ScraperSvc/bin/Debug/net6.0/ScraperSvc.dll","args":[],"cwd":"/home/savaho/Documents/codex/ScraperSvc","console":"internalConsole","logging":{"engineLogging":false},"stopAtEntry":false,"__configurationTarget":5,"internalConsoleOptions":"openOnSessionStart","__sessionId":"06f97fcc-0188-4f25-9e2d-852075a37925"},"type":"request","seq":2}
<- (E) {"seq":4,"type":"event","event":"output","body":{"category":"console","output":"-------------------------------------------------------------------\nYou may only use the Microsoft .NET Core Debugger (vsdbg) with\nVisual Studio Code, Visual Studio or Visual Studio for Mac software\nto help you develop and test your applications.\n-------------------------------------------------------------------\n","severity":"ok"}}
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
<- (R) {"seq":5,"type":"response","request_seq":2,"success":true,"command":"launch"}
<- (E) {"seq":6,"type":"event","event":"initialized","body":{}}
-> (C) {"command":"setBreakpoints","arguments":{"source":{"name":"Worker.cs","path":"/home/savaho/Documents/codex/ScraperSvc/Worker.cs","checksums":[{"algorithm":"SHA1","checksum":"4334059d5d2698c8edc327cbb3d7cb71be234599"},{"algorithm":"SHA256","checksum":"0eca3e4624596c8a2d0f4e7503b781da9d5dcc5b8f9652eec4d3912b99dcb4cb"},{"algorithm":"SHA1","checksum":"878651a35d283d9440166ecdb117c87d5278bfa4"},{"algorithm":"SHA256","checksum":"da5944d9cf75a12ea6abe7c56cc3d0ea2b174d131ed1fedc8334a9240ae9a62a"}]},"lines":[9,16,18],"breakpoints":[{"line":9},{"line":16},{"line":18}],"sourceModified":false},"type":"request","seq":3}
<- (R) {"seq":7,"type":"response","request_seq":3,"success":true,"command":"setBreakpoints","body":{"breakpoints":[{"id":1,"verified":false,"message":"The breakpoint is pending and will be resolved when debugging starts.","line":9},{"id":2,"verified":false,"message":"The breakpoint is pending and will be resolved when debugging starts.","line":16},{"id":3,"verified":false,"message":"The breakpoint is pending and will be resolved when debugging starts.","line":18}]}}
-> (C) {"command":"setFunctionBreakpoints","arguments":{"breakpoints":[]},"type":"request","seq":4}
<- (R) {"seq":8,"type":"response","request_seq":4,"success":true,"command":"setFunctionBreakpoints","body":{"breakpoints":[]}}
-> (C) {"command":"setExceptionBreakpoints","arguments":{"filters":[],"filterOptions":[{"filterId":"all"},{"filterId":"user-unhandled"}]},"type":"request","seq":5}
<- (R) {"seq":9,"type":"response","request_seq":5,"success":true,"command":"setExceptionBreakpoints","body":{"breakpoints":[{"verified":true},{"verified":true}]}}
-> (C) {"command":"configurationDone","type":"request","seq":6}
<- (E) {"seq":10,"type":"event","event":"output","body":{"category":"telemetry","output":"VS/Diagnostics/Debugger/vsdbg/ProcessCreate","data":{"VS.Diagnostics.Debugger.vsdbg.Distribution.Version":"21.10","VS.Diagnostics.Debugger.vsdbg.Distribution.Name":"ubuntu","VS.Diagnostics.Debugger.vsdbg.OSFamily":"Linux","VS.Diagnostics.Debugger.vsdbg.Version":"17.0.10712.2 commit:70a83505117741ba30f92c713a4bb0d0395c3197"}}}
<- (E) {"seq":11,"type":"event","event":"process","body":{"name":"/home/savaho/Documents/codex/ScraperSvc/bin/Debug/net6.0/ScraperSvc.dll","systemProcessId":21015,"isLocalProcess":true,"startMethod":"launch"}}
<- (E) {"seq":12,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":1,"verified":false,"message":"No symbols have been loaded for this document.","line":9}}}
<- (E) {"seq":13,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":2,"verified":false,"message":"No symbols have been loaded for this document.","line":16}}}
<- (E) {"seq":14,"type":"event","event":"breakpoint","body":{"reason":"changed","breakpoint":{"id":3,"verified":false,"message":"No symbols have been loaded for this document.","line":18}}}
<- (E) {"seq":15,"type":"event","event":"output","body":{"category":"telemetry","output":"VS/Diagnostics/Debugger/vsdbg/Launch","data":{"VS.Diagnostics.Debugger.vsdbg.Launch.Duration":248,"VS.Diagnostics.Debugger.vsdbg.SourceFileMappings":0,"VS.Diagnostics.Debugger.vsdbg.VisualizerFileUsed":false,"VS.Diagnostics.Debugger.vsdbg.TargetType":"Live","VS.Diagnostics.Debugger.vsdbg.AdapterId":"coreclr","VS.Diagnostics.Debugger.vsdbg.Distribution.Version":"21.10","VS.Diagnostics.Debugger.vsdbg.Distribution.Name":"ubuntu","VS.Diagnostics.Debugger.vsdbg.OSFamily":"Linux","VS.Diagnostics.Debugger.vsdbg.Version":"17.0.10712.2 commit:70a83505117741ba30f92c713a4bb0d0395c3197"}}}
<- (R) {"seq":16,"type":"response","request_seq":6,"success":true,"command":"configurationDone"}
-> (C) {"command":"threads","type":"request","seq":7}
<- (R) {"seq":17,"type":"response","request_seq":7,"success":true,"command":"threads","body":{"threads":[]}}
<- (E) {"seq":18,"type":"event","event":"output","body":{"category":"stdout","output":"\u001B[40m\u001B[32minfo\u001B[39m\u001B[22m\u001B[49m: ScraperSvc.Worker[0]\n"}}
info: ScraperSvc.Worker[0]
<- (E) {"seq":19,"type":"event","event":"output","body":{"category":"stdout","output":"      Worker running at: 11/12/2021 15:45:16 -08:00\n"}}
      Worker running at: 11/12/2021 15:45:16 -08:00
<- (E) {"seq":20,"type":"event","event":"output","body":{"category":"stdout","output":"21015\n"}}
21015
<- (E) {"seq":21,"type":"event","event":"output","body":{"category":"stdout","output":"/home/savaho/Documents/codex/ScraperSvc/bin/Debug/net6.0/ScraperSvc.dll\n"}}
/home/savaho/Documents/codex/ScraperSvc/bin/Debug/net6.0/ScraperSvc.dll
<- (E) {"seq":22,"type":"event","event":"output","body":{"category":"stdout","output":"/home/savaho/dotnet/dotnet\n"}}
/home/savaho/dotnet/dotnet
<- (E) {"seq":23,"type":"event","event":"output","body":{"category":"stderr","output":"The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.\n"}}
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
<- (E) {"seq":24,"type":"event","event":"output","body":{"category":"console","output":"The program '[21015] ScraperSvc.dll' has exited with code 0 (0x0).\n"}}
The program '[21015] ScraperSvc.dll' has exited with code 0 (0x0).
<- (E) {"seq":25,"type":"event","event":"exited","body":{"exitCode":0}}
<- (E) {"seq":26,"type":"event","event":"terminated","body":{}}
-> (C) {"command":"disconnect","arguments":{"restart":false,"terminateDebuggee":false},"type":"request","seq":8}
<- (E) {"seq":27,"type":"event","event":"output","body":{"category":"telemetry","output":"VS/Diagnostics/Debugger/vsdbg/DebugCompleted","data":{"VS.Diagnostics.Debugger.vsdbg.DebugCompleted.BreakCounter":0,"VS.Diagnostics.Debugger.vsdbg.AdapterId":"coreclr","VS.Diagnostics.Debugger.vsdbg.Distribution.Version":"21.10","VS.Diagnostics.Debugger.vsdbg.Distribution.Name":"ubuntu","VS.Diagnostics.Debugger.vsdbg.OSFamily":"Linux","VS.Diagnostics.Debugger.vsdbg.Version":"17.0.10712.2 commit:70a83505117741ba30f92c713a4bb0d0395c3197"}}}
<- (R) {"seq":28,"type":"response","request_seq":8,"success":true,"command":"disconnect"}
KyleC69 commented 2 years ago

I noticed that in the launch command that it says engineLogging is false although clearly it is.

gregg-miskelly commented 2 years ago

Thanks. Here is the problem:

The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.

There is some sort of issue with the .NET debugging services on your computer. Do you have $TEMPDIR set? Can you create and read files in that directory (or /tmp if you don't have it set)?

KyleC69 commented 2 years ago

I added an Environment.Exit in the Execute loop of the worker class. just to limit the output. If I don't immediatley exit and let the apps run that error does not appear

gregg-miskelly commented 2 years ago

It is still the problem -- the debugger should have gotten a CoreCLR started event before any .NET code ran in your process. The debugger doesn't have any idea how long that might take, so it will only show the warning if the process exits without starting .NET Code (hence adding 'Environment.Exit' causes the warning to show up). But it the problem either way.

KyleC69 commented 2 years ago

Ok do you have any suggestions on where to find the issue? I started with clean installs. here is my enviro

savaho@cuntz911:~/Documents/codex/ScraperSvc$ env
SHELL=/bin/bash
SESSION_MANAGER=local/cuntz911:@/tmp/.ICE-unix/2660,unix/cuntz911:/tmp/.ICE-unix/2660
QT_ACCESSIBILITY=1
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu-wayland:/etc/xdg
SSH_AGENT_LAUNCHER=gnome-keyring
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_MENU_PREFIX=gnome-
TERM_PROGRAM_VERSION=1.63.0-insider
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LANGUAGE=en_US
GNOME_SHELL_SESSION_MODE=ubuntu
DOTNET_ROOT=/home/savaho/dotnet/
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
BREAKPAD_DUMP_LOCATION=/home/savaho/.config/Code - Insiders/exthost Crash Reports
XMODIFIERS=@im=ibus
DESKTOP_SESSION=ubuntu-wayland
GTK_MODULES=gail:atk-bridge
PWD=/home/savaho/Documents/codex/ScraperSvc
XDG_SESSION_DESKTOP=ubuntu-wayland
LOGNAME=savaho
XDG_SESSION_TYPE=wayland
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
SYSTEMD_EXEC_PID=2677
XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.XK8OC1
VSCODE_GIT_ASKPASS_NODE=/usr/share/code-insiders/code-insiders
IM_CONFIG_CHECK_ENV=1
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/savaho
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
GDM_LANG=en_US
HOME=/home/savaho
IM_CONFIG_PHASE=1
LANG=en_US.UTF-8
DOTNET_EnableDiagnostics=0
XDG_CURRENT_DESKTOP=Unity
WAYLAND_DISPLAY=wayland-0
GIT_ASKPASS=/usr/share/code-insiders/resources/app/extensions/git/dist/askpass.sh
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
INVOCATION_ID=68586a38a1394d5a8b97942ec33a831e
MANAGERPID=972
CHROME_DESKTOP=code-insiders-url-handler.desktop
GJS_DEBUG_OUTPUT=stderr
VSCODE_GIT_ASKPASS_EXTRA_ARGS=
GNOME_SETUP_DISPLAY=:1
XDG_SESSION_CLASS=user
TERM=xterm-256color
USER=savaho
VSCODE_GIT_IPC_HANDLE=/run/user/1000/vscode-git-29f1a1db97.sock
DISPLAY=:0
SHLVL=1
DOTNET_ROLL_FORWARD_TO_PRERELEASE=1
QT_IM_MODULE=ibus
XDG_RUNTIME_DIR=/run/user/1000
VSCODE_GIT_ASKPASS_MAIN=/usr/share/code-insiders/resources/app/extensions/git/dist/askpass-main.js
JOURNAL_STREAM=8:28832
XDG_DATA_DIRS=/usr/share/ubuntu-wayland:/usr/local/share/:/usr/share/
GDK_BACKEND=x11
PATH=/home/savaho/dotnet/:/home/savaho/dotnet/sdk/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr:/home/savaho/.dotnet/tools:/home/savaho/.dotnet/tools:/home/savaho/.dotnet/tools:/opt/mssql-tools/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr:/home/savaho/.dotnet/tools:/home/savaho/.dotnet/tools:/home/savaho/.dotnet/tools
GDMSESSION=ubuntu-wayland
ORIGINAL_XDG_CURRENT_DESKTOP=ubuntu:GNOME
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
GIO_LAUNCHED_DESKTOP_FILE_PID=21661
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/code-insiders.desktop
TERM_PROGRAM=vscode
_=/usr/bin/env
savaho@cuntz911:~/Documents/codex/ScraperSvc$ 
gregg-miskelly commented 2 years ago

A few things to check:

  1. Can you read and write to /tmp?
  2. While the target process is running, what do you get from ls -l /tmp/clr-debug-pipe-<your-process-id-here>-*
  3. What do you get from head -1 /proc/<your-process-id-here>/stat

The output from step 2 should look something like:

$ ls -l /tmp/clr-debug-pipe-407-*
prwx------ 1 greggm greggm 0 Nov 12 16:49 /tmp/clr-debug-pipe-407-109835-in
prwx------ 1 greggm greggm 0 Nov 12 16:49 /tmp/clr-debug-pipe-407-109835-out

The output from step 3 should look something like:

$ head -1 /proc/407/stat
407 (CsCon1) S 377 377 9 34816 377 4210688 1591 0 0 0 1 1 0 0 20 0 7 0 109835 3033149440 6520 18446744073709551615 94906123403264 94906123492781 140732545731952 0 0 0 0 4096 134431998 0 0 0 17 6 0 0 0 0 0 94906123528024 94906123531457 94906134687744 140732545737186 140732545737235 140732545737235 140732545740743 0

For reference, here is the code that is building up the pipe name: https://github.com/dotnet/runtime/blob/577a70afa472a2b7aa8e05947e185d920f42b23d/src/coreclr/pal/src/thread/process.cpp#L2267

KyleC69 commented 2 years ago

I cleaned out the temp dir and all seems fine there. Attached is the temp dir after a run of an app. tempdir.gz

KyleC69 commented 2 years ago

prwx------ 1 savaho savaho 0 Nov 12 20:06 /tmp/clr-debug-pipe-26675-6803046-in prwx------ 1 savaho savaho 0 Nov 12 20:06 /tmp/clr-debug-pipe-26675-6803046-out

KyleC69 commented 2 years ago

:~$ head -1 /proc/26675/stat 26675 (vsdbg-ui) S 22671 22591 22591 0 -1 1077936128 8159 0 0 0 85 8 0 0 20 0 16 0 6803046 4402810880 17355 18446744073709551615 4194304 4207428 140732466260368 0 0 0 0 4096 17630 0 0 0 17 1 0 0 0 0 0 6307016 6308080 24207360 140732466262769 140732466262859 140732466262859 140732466266014 0

KyleC69 commented 2 years ago

ok here is something... That PID referenced above is for the vsdbg-ui. 26693 is the pid for the actual app and there is no data in tmp for that pid.

head -1 /proc/26693/stat
26693 (dotnet) S 26675 22591 22591 0 -1 1077936128 4347 0 0 0 87 15 0 0 20 0 10 0 6803109 3246612480 10495 18446744073709551615 94377596682240 94377596807406 140728263744592 0 0 0 0 4096 17662 0 0 0 17 0 0 0 0 0 0 94377598906872 94377598910597 94377624403968 140728263750439 140728263750538 140728263750538 140728263753693 0
KyleC69 commented 2 years ago

Thank you for your assistance Gregg! I have been able to get the debugger working again. Unfortunately I was unable to pin point the specific issue and fix.. I removed all traces of omnisharp and code-insiders and nuget. Cleared all cache/temp files. Ran bleachbit and I was also missing a sticky bit on pkexec. . I have one last annoying issue that I have had for 2 weeks. Omnisharp complains when starting code from the menu, that it cannot find the sdk. when checking environment from integrated terminal all variables are correct. dotnet, tools, nuget etc run fine.... If I start code-insiders from an external terminal Omnisharp does not complain and it runs fine. Is there a property I can set in the omnisharp.json or other file to hardcode the path to Sdk for Omnisharp?