Skip to content

The .NET Core SDK cannot be located when it's installed as a snap with dotnet-sdk. #3502

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

Closed
NatoBoram opened this issue Jan 10, 2020 · 11 comments

Comments

@NatoBoram
Copy link

NatoBoram commented Jan 10, 2020

Issue Description

The .NET Core SDK cannot be located when it's installed as a snap

Steps to Reproduce

  1. Install dotnet-sdk
sudo snap install dotnet-sdk
  1. Open VSCode

Expected Behavior

The extension should work.

Actual Behavior

The extension doesn't work.

Logs

The .NET Core SDK cannot be located. .NET Core debugging will not be enabled. Make sure the .NET Core SDK is installed and is on the path.

OmniSharp log

Starting OmniSharp server at 2020-01-10, 11:31:19 a.m.
Target: /home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation.sln

OmniSharp server started.
Path: /home/gendnat/.vscode-insiders/extensions/ms-vscode.csharp-1.21.9/.omnisharp/1.34.9/run
PID: 17803

Starting OmniSharp on ubuntu 19.10 (x64)
info: OmniSharp.Services.DotNetCliService
DotNetPath set to dotnet
info: OmniSharp.MSBuild.Discovery.MSBuildLocator
Located 1 MSBuild instance(s)
1: StandAlone 16.3 - "/home/gendnat/.vscode-insiders/extensions/ms-vscode.csharp-1.21.9/.omnisharp/1.34.9/omnisharp/.msbuild/Current/Bin"
info: OmniSharp.MSBuild.Discovery.MSBuildLocator
MSBUILD_EXE_PATH environment variable set to '/home/gendnat/.vscode-insiders/extensions/ms-vscode.csharp-1.21.9/.omnisharp/1.34.9/omnisharp/.msbuild/Current/Bin/MSBuild.dll'
info: OmniSharp.MSBuild.Discovery.MSBuildLocator
Registered MSBuild instance: StandAlone 16.3 - "/home/gendnat/.vscode-insiders/extensions/ms-vscode.csharp-1.21.9/.omnisharp/1.34.9/omnisharp/.msbuild/Current/Bin"
CscToolExe = csc.exe
MSBuildToolsPath = /home/gendnat/.vscode-insiders/extensions/ms-vscode.csharp-1.21.9/.omnisharp/1.34.9/omnisharp/.msbuild/Current/Bin
CscToolPath = /home/gendnat/.vscode-insiders/extensions/ms-vscode.csharp-1.21.9/.omnisharp/1.34.9/omnisharp/.msbuild/Current/Bin/Roslyn
BypassFrameworkInstallChecks = true
MSBuildExtensionsPath = /home/gendnat/.vscode-insiders/extensions/ms-vscode.csharp-1.21.9/.omnisharp/1.34.9/omnisharp/.msbuild
info: OmniSharp.Cake.CakeProjectSystem
Detecting Cake files in '/home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation'.
info: OmniSharp.Cake.CakeProjectSystem
Could not find any Cake files
info: OmniSharp.MSBuild.ProjectSystem
Detecting projects in '/home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation.sln'.
info: OmniSharp.MSBuild.ProjectManager
Queue project update for '/home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation/Vacation.csproj'
info: OmniSharp.Script.ScriptProjectSystem
Detecting CSX files in '/home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation'.
info: OmniSharp.Script.ScriptProjectSystem
Could not find any CSX files
info: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0
info: OmniSharp.MSBuild.ProjectManager
Loading project: /home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation/Vacation.csproj
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.EditorConfigWorkspaceOptionsProvider, Order: 200
info: OmniSharp.WorkspaceInitializer
Configuration finished.
info: OmniSharp.Stdio.Host
Omnisharp server running using Stdio at location '/home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation' on host 17658.
It was not possible to find any installed .NET Core SDKs
Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
https://aka.ms/dotnet-download
[warn]: OmniSharp.MSBuild.ProjectManager
Failed to load project file '/home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation/Vacation.csproj'.
/home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation/Vacation.csproj(1,1)
Microsoft.Build.Exceptions.InvalidProjectFileException: The SDK 'Microsoft.NET.Sdk.Web' specified could not be found. /home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation/Vacation.csproj
at Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject (System.String errorSubCategoryResourceName, Microsoft.Build.Shared.IElementLocation elementLocation, System.String resourceName, System.Object[] args) [0x00040] in :0
at Microsoft.Build.Shared.ProjectErrorUtilities.VerifyThrowInvalidProject[T1] (System.Boolean condition, System.String errorSubCategoryResourceName, Microsoft.Build.Shared.IElementLocation elementLocation, System.String resourceName, T1 arg0) [0x00003] in :0
at Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject[T1] (Microsoft.Build.Shared.IElementLocation elementLocation, System.String resourceName, T1 arg0) [0x00000] in :0
at Microsoft.Build.Evaluation.Evaluator4[P,I,M,D].ExpandAndLoadImportsFromUnescapedImportExpressionConditioned (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement, System.Collections.Generic.List1[Microsoft.Build.Construction.ProjectRootElement]& projects, Microsoft.Build.BackEnd.SdkResolution.SdkResult& sdkResult, System.Boolean throwOnFileNotExistsError) [0x00254] in :0
at Microsoft.Build.Evaluation.Evaluator4[P,I,M,D].ExpandAndLoadImports (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement, Microsoft.Build.BackEnd.SdkResolution.SdkResult& sdkResult) [0x00027] in <b695b16788dd418cbe8b4d98f7a92ff3>:0 at Microsoft.Build.Evaluation.Evaluator4[P,I,M,D].EvaluateImportElement (System.String directoryOfImportingFile, Microsoft.Build.Construction.ProjectImportElement importElement) [0x0000d] in :0
at Microsoft.Build.Evaluation.Evaluator4[P,I,M,D].PerformDepthFirstPass (Microsoft.Build.Construction.ProjectRootElement currentProjectOrImport) [0x000e6] in <b695b16788dd418cbe8b4d98f7a92ff3>:0 at Microsoft.Build.Evaluation.Evaluator4[P,I,M,D].Evaluate (Microsoft.Build.BackEnd.Logging.ILoggingService loggingService, Microsoft.Build.Framework.BuildEventContext buildEventContext) [0x0011c] in :0
at Microsoft.Build.Evaluation.Evaluator4[P,I,M,D].Evaluate (Microsoft.Build.Evaluation.IEvaluatorData4[P,I,M,D] data, Microsoft.Build.Construction.ProjectRootElement root, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings, System.Int32 maxNodeCount, Microsoft.Build.Collections.PropertyDictionary1[T] environmentProperties, Microsoft.Build.BackEnd.Logging.ILoggingService loggingService, Microsoft.Build.Evaluation.IItemFactory2[S,T] itemFactory, Microsoft.Build.Evaluation.IToolsetProvider toolsetProvider, Microsoft.Build.Evaluation.ProjectRootElementCache projectRootElementCache, Microsoft.Build.Framework.BuildEventContext buildEventContext, Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService sdkResolverService, System.Int32 submissionId, Microsoft.Build.Evaluation.Context.EvaluationContext evaluationContext, System.Boolean interactive) [0x0002f] in :0
at Microsoft.Build.Evaluation.Project.Reevaluate (Microsoft.Build.BackEnd.Logging.ILoggingService loggingServiceForEvaluation, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings, Microsoft.Build.Evaluation.Context.EvaluationContext evaluationContext) [0x0005e] in :0
at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary (Microsoft.Build.BackEnd.Logging.ILoggingService loggingServiceForEvaluation, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings, Microsoft.Build.Evaluation.Context.EvaluationContext evaluationContext) [0x00035] in :0
at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary (Microsoft.Build.BackEnd.Logging.ILoggingService loggingServiceForEvaluation, Microsoft.Build.Evaluation.Context.EvaluationContext evaluationContext) [0x00000] in :0
at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary (Microsoft.Build.Evaluation.Context.EvaluationContext evaluationContext) [0x00007] in :0
at Microsoft.Build.Evaluation.Project.Initialize (System.Collections.Generic.IDictionary2[TKey,TValue] globalProperties, System.String toolsVersion, System.String subToolsetVersion, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings, Microsoft.Build.Evaluation.Context.EvaluationContext evaluationContext) [0x00126] in <b695b16788dd418cbe8b4d98f7a92ff3>:0 at Microsoft.Build.Evaluation.Project..ctor (System.String projectFile, System.Collections.Generic.IDictionary2[TKey,TValue] globalProperties, System.String toolsVersion, System.String subToolsetVersion, Microsoft.Build.Evaluation.ProjectCollection projectCollection, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings, Microsoft.Build.Evaluation.Context.EvaluationContext evaluationContext) [0x00093] in :0
at Microsoft.Build.Evaluation.Project..ctor (System.String projectFile, System.Collections.Generic.IDictionary2[TKey,TValue] globalProperties, System.String toolsVersion, System.String subToolsetVersion, Microsoft.Build.Evaluation.ProjectCollection projectCollection, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings) [0x00000] in <b695b16788dd418cbe8b4d98f7a92ff3>:0 at Microsoft.Build.Evaluation.Project..ctor (System.String projectFile, System.Collections.Generic.IDictionary2[TKey,TValue] globalProperties, System.String toolsVersion, Microsoft.Build.Evaluation.ProjectCollection projectCollection, Microsoft.Build.Evaluation.ProjectLoadSettings loadSettings) [0x00000] in :0
at Microsoft.Build.Evaluation.Project..ctor (System.String projectFile, System.Collections.Generic.IDictionary2[TKey,TValue] globalProperties, System.String toolsVersion, Microsoft.Build.Evaluation.ProjectCollection projectCollection) [0x00000] in <b695b16788dd418cbe8b4d98f7a92ff3>:0 at Microsoft.Build.Evaluation.ProjectCollection.LoadProject (System.String fileName, System.Collections.Generic.IDictionary2[TKey,TValue] globalProperties, System.String toolsVersion) [0x000f7] in :0
at Microsoft.Build.Evaluation.ProjectCollection.LoadProject (System.String fileName, System.String toolsVersion) [0x00000] in :0
at OmniSharp.MSBuild.ProjectLoader.EvaluateProjectFileCore (System.String filePath) [0x0003f] in <1e840ade9fdb41e3ae5c236a4f4a1c58>:0
at OmniSharp.MSBuild.ProjectLoader.BuildProject (System.String filePath) [0x0000d] in <1e840ade9fdb41e3ae5c236a4f4a1c58>:0
at OmniSharp.MSBuild.ProjectFile.ProjectFileInfo.Load (System.String filePath, OmniSharp.MSBuild.ProjectIdInfo projectIdInfo, OmniSharp.MSBuild.ProjectLoader loader) [0x00015] in <1e840ade9fdb41e3ae5c236a4f4a1c58>:0
at OmniSharp.MSBuild.ProjectManager+<>c__DisplayClass29_0.b__0 () [0x00000] in <1e840ade9fdb41e3ae5c236a4f4a1c58>:0
at (wrapper delegate-invoke) System.Func1[System.ValueTuple3[OmniSharp.MSBuild.ProjectFile.ProjectFileInfo,System.Collections.Immutable.ImmutableArray1[OmniSharp.MSBuild.Logging.MSBuildDiagnostic],OmniSharp.MSBuild.Notification.ProjectLoadedEventArgs]].invoke_TResult() at OmniSharp.MSBuild.ProjectManager.LoadOrReloadProject (System.String projectFilePath, System.Func1[TResult] loader) [0x0001b] in <1e840ade9fdb41e3ae5c236a4f4a1c58>:0

Attempted to update project that is not loaded: /home/gendnat/Code/bitbucket.org/groupecmi/gri-ms-vacation/Vacation/Vacation.csproj

C# log

Failed to spawn 'dotnet --info'

Environment information

VSCode version: 1.42.0-insider
C# Extension: 1.21.9

Mono Information OmniSharp using built-in mono
Dotnet Information A valid dotnet installation could not be found.
Visual Studio Code Extensions
Extension Author Version
Angular2 johnpapa 8.3.0
beautify HookyQR 1.5.0
code-settings-sync Shan 3.4.3
csharp ms-vscode 1.21.9
dart-code Dart-Code 3.7.1
datapack-helper pca 0.6.1
debugger-for-chrome msjsdiag 4.12.4
debugger-for-edge msjsdiag 1.0.13
discord-vscode icrawl 3.13.0
docs-yaml docsmsft 0.2.4
dotenv mikestead 1.0.1
EditorConfig EditorConfig 0.14.4
git-project-manager felipecaputo 1.7.1
githistory donjayamanne 0.4.13
gitlens eamodio 10.2.0
Go ms-vscode 0.12.0
gradle-language naco-siren 0.2.3
jbockle-format-files jbockle 3.0.0
jenkinsfile-support ivory-lab 0.4.4
jshint dbaeumer 0.10.21
language-mcfunction arcensoth 0.16.0
markdown-pdf yzane 1.4.1
mssql ms-mssql 1.8.0
mustache dawhite 1.1.1
ng-template Angular 0.900.4
npm-intellisense christian-kohler 1.3.0
output-colorizer IBM 0.1.2
path-intellisense christian-kohler 1.4.2
php-cs-fixer junstyle 0.1.129
polacode pnp 0.3.4
python ms-python 2020.1.57204
read-time johnpapa 0.2.0
sqltools mtxr 0.21.6
systemd-unit-file coolbear 1.0.6
typescript-javascript-grammar ms-vscode 0.0.53
vscode-docker ms-azuretools 0.9.0
vscode-edge-devtools ms-edgedevtools 1.0.6
vscode-firefox-debug firefox-devtools 2.6.1
vscode-markdownlint DavidAnson 0.33.0
vscode-npm-script eg2 0.3.10
vscode-react-native msjsdiag 0.13.2
vscode-typescript-next ms-vscode 3.8.20200109
vscode-typescript-tslint-plugin ms-vscode 1.2.3
vscode-yaml redhat 0.6.1
vscodeintellicode VisualStudioExptTeam 1.2.2
vsliveshare ms-vsliveshare 1.0.1456
xml DotJoshJohnson 2.5.0

Now that all those tools aren't able to output dotnet --info, let me just print that command real quick.

.NET Core SDK (reflecting any global.json):
 Version:   3.1.100
 Commit:    cd82f021f4

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  19.10
 OS Platform: Linux
 RID:         ubuntu.19.10-x64
 Base Path:   /snap/dotnet-sdk/57/sdk/3.1.100/

Host (useful for support):
  Version: 3.1.0
  Commit:  65f04fb6db

.NET Core SDKs installed:
  3.1.100 [/snap/dotnet-sdk/57/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.App 3.1.0 [/snap/dotnet-sdk/57/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 3.1.0 [/snap/dotnet-sdk/57/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Part of the problem is that dotnet-sdk will expose the command as dotnet-sdk.dotnet instead of dotnet. /snap/dotnet-sdk/current/ can be added to $PATH as a workaround, but then you lose auto-completion, so it's not a valid solution.

@NatoBoram NatoBoram changed the title The .NET Core SDK cannot be located when it's installed as a snap. The .NET Core SDK cannot be located when it's installed as a snap with dotnet-sdk. Jan 10, 2020
@gregg-miskelly
Copy link
Contributor

@NatoBoram Are you saying that dotnet isn't a valid command? -- It isn't on the PATH and there is no symlink to it?

This extension heavily depends on dotnet being a command. So you will need to launch this extension from a shell where somehow it exists.

@NatoBoram
Copy link
Author

NatoBoram commented Jan 13, 2020

The two user-workarounds I found were to add /snap/dotnet-sdk/current/ to $PATH or symlink dotnet in /usr/local/bin/ (#3077 (comment)). This way, it works. However, I'd like the extension to work by default - either by fixing the snap dotnet-sdk or by having this extension look for dotnet-sdk.dotnet when dotnet wasn't found.

@gregg-miskelly
Copy link
Contributor

Thanks. I talked to the .NET team and apparently this is expected. More information is in the .NET Core SDK release notes: https://github.com/dotnet/core/blob/master/release-notes/3.1/3.1.0/3.1.0-install-instructions.md#install-using-snap

In #3507 I am hoping to add some troubleshooting instructions for when this extension cannot locate the .NET SDK, and this seems like a good thing to mention there.

@filipw
Copy link
Contributor

filipw commented Jan 13, 2020

please also note this issue https://github.com/dotnet/cli/issues/12110 which should also help address the problems with snap

@NatoBoram
Copy link
Author

After trying sudo snap alias dotnet-sdk.dotnet dotnet, I still have errors.

Some projects have trouble loading. Please review the output for more details.
It was not possible to find any installed .NET Core SDKs
Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
https://aka.ms/dotnet-download

The dotnet command was added to $PATH :

sudo snap alias dotnet-sdk.dotnet dotnet
whereis dotnet
dotnet: /snap/bin/dotnet

@gregg-miskelly
Copy link
Contributor

gregg-miskelly commented Jan 13, 2020

You are now outside of my area of knowledge, but I believe that is the problem that Filip was referencing. There is one work around in the issue he referenced. Apparently another possible work around is -- to add the following to ~/.omnisharp/omnisharp.json.

{
    "MSBuild": {
        "UseLegacySdkResolver": true
    }
}

@sberney
Copy link

sberney commented Aug 7, 2020

None of these fixes did the trick for me. I guess I won't develop C# on Ubuntu.

@JoeRobich
Copy link
Member

JoeRobich commented Aug 7, 2020

@sberney Since there is obviously a lot of extra configuration required to get a working install with Snap. It may be simpler to use APT instead. https://docs.microsoft.com/en-us/dotnet/core/install/linux#ubuntu & https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu

@sberney
Copy link

sberney commented Aug 18, 2020

Thanks; I'll try this next week. I thought this was the first thing I tried though. I never use snap unless there is no other way. It probably told me to use snap, or said "no such package" or something like that.

@behnood-eghbali
Copy link

Ubuntu 18.04: Finally my problem solved! Snap didn't work for me either.
I had the same issue with vs code dotnet path. I didn't use snap to install dotnet sdk. instead, I downloaded and installed it manually.
Solution:
insert export PATH="/home/username/dotnet:$PATH" and export DOTNET_ROOT="/home/username/dotnet" to ~./bashrc and ~./bashprofile.

@kaii-lb
Copy link

kaii-lb commented Feb 18, 2021

Hi, i am having the same problem, where do i write your solution? Excuse me if this is a very basic/noob question i just got into c# and coding.

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

No branches or pull requests

7 participants