mono / monodevelop

MonoDevelop is a cross platform .NET IDE
http://www.monodevelop.com
2.82k stars 1.01k forks source link

NRE when SDK cannot be found #4342

Open mhutch opened 6 years ago

mhutch commented 6 years ago

If I try to open a project with a nonexistent SDK, I get the following exception:

image

If I try to build from a terminal, I get a much more useful error:

/Users/mikayla/code/ProjectFae/Source/ProjectFaeMono/ProjectFaeMono.csproj : error : Could not find UE4 engine matching '{15B0F9D0-4216-D682-DA95-EC969882E53B}'

The IDE log shows a whole assortment of errors:

ERROR [2018-03-27 20:24:24Z]: [MSBuild]
System.ArgumentNullException: Value cannot be null.
Parameter name: v1
  at System.Version.op_LessThan (System.Version v1, System.Version v2) [0x0000e] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/version.cs:454 
  at Microsoft.DotNet.MSBuildSdkResolver.DotNetMSBuildSdkResolver.Resolve (Microsoft.Build.Framework.SdkReference sdkReference, Microsoft.Build.Framework.SdkResolverContext context, Microsoft.Build.Framework.SdkResultFactory factory) [0x000b7] in /Users/ankit/dev/cli/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs:71 
  at MonoDevelop.Projects.MSBuild.SdkResolution.GetSdkPath (Microsoft.Build.Framework.SdkReference sdk, MonoDevelop.Projects.MSBuild.ILoggingService logger, MonoDevelop.Projects.MSBuild.MSBuildContext buildEventContext, System.String projectFile, System.String solutionPath) [0x00046] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SdkResolution.cs:63 
ERROR [2018-03-27 20:24:24Z]: [MSBuild] SDK not found
ERROR [2018-03-27 20:24:24Z]: MSBuild project could not be evaluated
System.NullReferenceException: Object reference not set to an instance of an object
  at MonoDevelop.Projects.MSBuild.SdkResolution.LogWarnings (MonoDevelop.Projects.MSBuild.ILoggingService logger, MonoDevelop.Projects.MSBuild.MSBuildContext bec, System.String projectFile, MonoDevelop.Projects.MSBuild.SdkResolution+SdkResultImpl result) [0x00000] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SdkResolution.cs:147 
  at MonoDevelop.Projects.MSBuild.SdkResolution.GetSdkPath (Microsoft.Build.Framework.SdkReference sdk, MonoDevelop.Projects.MSBuild.ILoggingService logger, MonoDevelop.Projects.MSBuild.MSBuildContext buildEventContext, System.String projectFile, System.String solutionPath) [0x000cf] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SdkResolution.cs:80 
  at MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine.GetImportFiles (MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine+ProjectInfo project, MonoDevelop.Projects.MSBuild.MSBuildEvaluationContext context, MonoDevelop.Projects.MSBuild.MSBuildImport import, System.String pathProperty, System.String pathPropertyValue, System.String& resolvedSdksPath, System.Boolean& keepSearching) [0x00060] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs:1137 
  at MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine.Evaluate (MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine+ProjectInfo project, MonoDevelop.Projects.MSBuild.MSBuildEvaluationContext context, MonoDevelop.Projects.MSBuild.MSBuildImport import, System.Boolean evalItems) [0x00189] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs:1096 
  at MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine.EvaluateObjects (MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine+ProjectInfo pi, MonoDevelop.Projects.MSBuild.MSBuildEvaluationContext context, System.Collections.Generic.IEnumerable`1[T] objects, System.Boolean evalItems) [0x0007f] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs:299 
  at MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine.EvaluateProject (MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine+ProjectInfo pi, MonoDevelop.Projects.MSBuild.MSBuildEvaluationContext context) [0x0015f] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs:246 
  at MonoDevelop.Projects.MSBuild.DefaultMSBuildEngine.Evaluate (System.Object projectInstance) [0x000e9] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs:209 
  at MonoDevelop.Projects.MSBuild.MSBuildProjectInstance.Evaluate () [0x00117] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectInstance.cs:106 
ERROR [2018-03-27 20:24:24Z]: Error while trying to load the project /Users/mikayla/code/ProjectFae/Source/ProjectFaeMono/ProjectFaeMono.csproj
MonoDevelop.Projects.MSBuild.ProjectEvaluationException: Object reference not set to an instance of an object
  at MonoDevelop.Projects.MSBuild.MSBuildProjectInstance.Evaluate () [0x0015a] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectInstance.cs:112 
  at MonoDevelop.Projects.MSBuild.MSBuildProject.Evaluate () [0x0001f] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs:447 
  at MonoDevelop.Projects.Extensions.ProjectTypeNode+<CreateSolutionItem>d__5.MoveNext () [0x00201] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/ProjectTypeNode.cs:74 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:152 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:535 
  at MonoDevelop.Projects.MSBuild.MSBuildProjectService+<LoadItem>d__58.MoveNext () [0x000b5] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:393 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:152 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 
  at MonoDevelop.Projects.ProjectService+<>c__DisplayClass25_0+<<ReadSolutionItem>b__0>d.MoveNext () [0x00101] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectService.cs:126 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:152 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2017-12/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 
  at MonoDevelop.Core.Runtime+<>c__DisplayClass41_0`1+<<RunInMainThread>b__0>d[T].MoveNext () [0x00036] in /Users/builder/data/lanes/5810/0bed5a33/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Runtime.cs:379 

I would expect the UI to show the same error MSBuild shows, and for the logs to show at most the same message.

VS bug #591643

mhutch commented 6 years ago

Note: it's possible for multiple SDKs to return errors:

/Users/mikayla/code/ProjectFae/Source/ProjectFaeMono/ProjectFaeMono.csproj : error : /usr/local/share/dotnet/sdk/2.1.4/Sdks/Mono.UE4.Sdk/Sdk not found. Check that a recent enough .NET Core SDK is installed and/or increase the version specified in global.json.
/Users/mikayla/code/ProjectFae/Source/ProjectFaeMono/ProjectFaeMono.csproj : error : Could not find UE4 engine matching '{15B0F9D0-4216-D682-DA95-EC969882E53B}'
Project "/Users/mikayla/code/ProjectFae/ProjectFae_Managed.sln" (1) is building "/Users/mikayla/code/ProjectFae/Source/ProjectFaeMono/ProjectFaeMono.csproj" (2) on node 1 (default targets).
/Users/mikayla/code/ProjectFae/Source/ProjectFaeMono/ProjectFaeMono.csproj : error MSB4236: The SDK 'Mono.UE4.Sdk' specified could not be found.
mhutch commented 6 years ago

(see also https://github.com/Microsoft/msbuild/issues/3145)

Therzok commented 6 years ago

cc @mrward