mono / monodevelop

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

Errors from NuGetPackageInstaller are not useful with PackageReference #5691

Open mhutch opened 6 years ago

mhutch commented 6 years ago

When MonoDevelop.PackageManagement.Tests.Helpers.NuGetPackageInstaller fails due to a package incompatibility error, the resulting exception is not useful:

2018-08-15T02:29:09.0602180Z 7) Xamarin Forms FSharp FormsApp Shared with XAML (MonoDevelopTests.Template tests.Xamarin Forms FSharp FormsApp Shared with XAML)
2018-08-15T02:29:09.0617430Z    System.AggregateException : One or more errors occurred.
2018-08-15T02:29:09.0635110Z   ----> System.AggregateException : One or more errors occurred.
2018-08-15T02:29:09.0653290Z   ----> System.AggregateException : One or more errors occurred.
2018-08-15T02:29:09.0672470Z   ----> System.InvalidOperationException : Package restore failed. Rolling back package changes for 'Xamarin.Forms.FSharp.FormsApp.Droid'.
2018-08-15T02:29:09.0681860Z 
2018-08-15T02:29:09.0698220Z --AggregateException
2018-08-15T02:29:09.0717530Z   at MonoDevelop.FSharp.Shared.AsyncTaskBind.continuation@248-1 (System.Threading.Tasks.Task t) [0x0000f] in /Users/vsts/agent/2.138.6/work/1/s/monodevelop/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Extensions.fs:0 
2018-08-15T02:29:09.0738630Z   at MonoDevelop.FSharp.Shared.AsyncTaskBind+AsyncBuilder-Bind@257.Invoke (System.Threading.Tasks.Task delegateArg0) [0x00000] in /Users/vsts/agent/2.138.6/work/1/s/monodevelop/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Extensions.fs:257 
2018-08-15T02:29:09.0761010Z   at System.Threading.Tasks.ContinuationResultTaskFromTask`1[TResult].InnerInvoke () [0x00024] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/threading/Tasks/TaskContinuation.cs:111 
2018-08-15T02:29:09.0781950Z   at System.Threading.Tasks.Task.Execute () [0x00010] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2509 
2018-08-15T02:29:09.0801000Z --AggregateException
2018-08-15T02:29:09.0820720Z   at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00013] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2166 
2018-08-15T02:29:09.0844020Z   at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00043] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:3196 
2018-08-15T02:29:09.0865150Z   at System.Threading.Tasks.Task.Wait () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:3061 
2018-08-15T02:29:09.0885520Z   at MonoDevelop.PackageManagement.InstallNuGetPackageAction.Execute (System.Threading.CancellationToken cancellationToken) [0x0005a] in /Users/vsts/agent/2.138.6/work/1/s/monodevelop/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallNuGetPackageAction.cs:135 
2018-08-15T02:29:09.0902510Z   at MonoDevelop.PackageManagement.InstallNuGetPackageAction.Execute () [0x00000] in /Users/vsts/agent/2.138.6/work/1/s/monodevelop/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallNuGetPackageAction.cs:121 
2018-08-15T02:29:09.0919450Z   at MonoDevelop.PackageManagement.Tests.Helpers.NuGetPackageInstaller+<>c__DisplayClass0_0.<InstallPackages>b__1 () [0x00027] in /Users/vsts/agent/2.138.6/work/1/s/monodevelop/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/NuGetPackageInstaller.cs:54 
2018-08-15T02:29:09.0939060Z   at System.Threading.Tasks.Task.InnerInvoke () [0x0000f] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2886 
2018-08-15T02:29:09.0960680Z   at System.Threading.Tasks.Task.Execute () [0x00010] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2509 
2018-08-15T02:29:09.0980840Z --- End of stack trace from previous location where exception was thrown ---
2018-08-15T02:29:09.1002060Z   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
2018-08-15T02:29:09.1024290Z   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
2018-08-15T02:29:09.1046360Z   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
2018-08-15T02:29:09.1069410Z   at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 
2018-08-15T02:29:09.1088750Z   at MonoDevelop.PackageManagement.Tests.Helpers.NuGetPackageInstaller+<InstallPackages>d__0.MoveNext () [0x000ec] in /Users/vsts/agent/2.138.6/work/1/s/monodevelop/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/NuGetPackageInstaller.cs:48 
2018-08-15T02:29:09.1106540Z --InvalidOperationException
2018-08-15T02:29:09.1124570Z   at NuGet.PackageManagement.NuGetPackageManager+<ExecuteBuildIntegratedProjectActionsAsync>d__75.MoveNext () [0x009e6] in <14622ca87bc64daf8e416ad183de0509>:0 
2018-08-15T02:29:09.1142480Z --- End of stack trace from previous location where exception was thrown ---
2018-08-15T02:29:09.1162850Z   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
2018-08-15T02:29:09.1185240Z   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
2018-08-15T02:29:09.1207350Z   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
2018-08-15T02:29:09.1228170Z   at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 
2018-08-15T02:29:09.1246820Z   at NuGet.PackageManagement.NuGetPackageManager+<ExecuteNuGetProjectActionsAsync>d__73.MoveNext () [0x0013b] in <14622ca87bc64daf8e416ad183de0509>:0 
2018-08-15T02:29:09.1264410Z --- End of stack trace from previous location where exception was thrown ---
2018-08-15T02:29:09.1284370Z   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
2018-08-15T02:29:09.1306830Z   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
2018-08-15T02:29:09.1328490Z   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
2018-08-15T02:29:09.1349650Z   at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 
2018-08-15T02:29:09.1368680Z   at NuGet.PackageManagement.NuGetPackageManager+<ExecuteNuGetProjectActionsAsync>d__72.MoveNext () [0x00096] in <14622ca87bc64daf8e416ad183de0509>:0 
2018-08-15T02:29:09.1386060Z --- End of stack trace from previous location where exception was thrown ---
2018-08-15T02:29:09.1405970Z   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00037] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 
2018-08-15T02:29:09.1427960Z   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 
2018-08-15T02:29:09.1450150Z   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 
2018-08-15T02:29:09.1472450Z   at System.Runtime.CompilerServices.TaskAwaiter.GetResult () [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 
2018-08-15T02:29:09.1490780Z   at MonoDevelop.PackageManagement.InstallNuGetPackageAction+<ExecuteAsync>d__43.MoveNext () [0x00241] in /Users/vsts/agent/2.138.6/work/1/s/monodevelop/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallNuGetPackageAction.cs:168 

I eventually figured out I could place a tracepoint in MonoDevelop.PackageManagement.PackageManagementEvents.OnPackageOperationMessageLogged and tracked the problem down to a framework compatibility issue. However, it would be much much better to get useful logs from CI.

VS bug #664247

mhutch commented 6 years ago

/cc @mrward @nosami

mrward commented 6 years ago

The NuGetPackageInstaller could either:

  1. Log all events generated by the PackageManagementEvents.
  2. Capture all the events generated by the PackageManagementEvents and report all of them only if an exception occurred.
  3. Always log warnings/errors reported by the PackageManagementEvents.

3 - Might be OK. 2 - Might be better since it would show all the NuGet activity.

mhutch commented 6 years ago

Seem this only happens with PackageReference, with packages.config the exception string is "Could not install package 'FSharp.Core 4.3.3'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author."

mrward commented 6 years ago

Since there is a better error message for packages.config - that makes me think that something should be improved for PackageReferences problems in general, not just when the NuGetPackageInstaller is used in tests. I think currently NuGet returns a flag saying the restore failed - maybe there is more information in the restore result we get back from NuGet that we could include in the exception being thrown.

mhutch commented 6 years ago

Agreed. Logging would still be useful though :)