Herdo / SolutionStartPage

Solution Start Page for Visual Studio 2015 and 2017
31 stars 15 forks source link

Blank white page for VS 2017 15.6.0 #19

Closed martosource closed 6 years ago

martosource commented 6 years ago

Just updated my VS2017 to 15.6.0 and the solution start page is showing blank white page.

ghost commented 6 years ago

On my machine VS 15.6 crashes on Startup whith the following stack:

Exception Info: System.NotSupportedException
   at SolutionStartPage.Core.Views.AppControlHost.ConfigureApp(Microsoft.Practices.Unity.IUnityContainer)
   at SolutionStartPage.Core.Views.AppControlHost.Initialize()
   at SolutionStartPage.Core.Views.AppControlHost.AppControlHost_Loaded(System.Object, System.Windows.RoutedEventArgs)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
   at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
   at System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs)
   at System.Windows.BroadcastEventHelper.BroadcastEvent(System.Windows.DependencyObject, System.Windows.RoutedEvent)
   at System.Windows.BroadcastEventHelper.BroadcastLoadedEvent(System.Object)
   at MS.Internal.LoadedOrUnloadedOperation.DoWork()
   at System.Windows.Media.MediaContext.FireLoadedPendingCallbacks()
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(System.Object)
   at System.Windows.Media.MediaContext.RenderMessageHandler(System.Object)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
zpqrtbnk commented 6 years ago

Same here, no crash, blank white page.

zpqrtbnk commented 6 years ago

In AppControlHost Visual Studio 2017 support is registered as

.RegisterType<IBootstrapper, Vs2017Bootstrapper>(
    new Version(15, 0).ToString(_VERSION_STRING_DETAIL_SPECIFIC))

but when configuring, the IVisualStudioVersion we get FullVersion equal to 15.6.27428.1 which is shortened to 15.6 which does not match the registered 15.0 - hence the NotSupportedException.

No idea why they decided to go with 15.6 this time after keeping 15.0 for previous updates... anyways, can be fixed by adding an extra

.RegisterType<IBootstrapper, Vs2017Bootstrapper>(
    new Version(15, 6).ToString(_VERSION_STRING_DETAIL_SPECIFIC))

in PreConfigureApp.

zpqrtbnk commented 6 years ago

Though, that will fail with 15.7... so we probably want to work on "15" only?

Herdo commented 6 years ago

@zpqrtbnk Thank you very much for the analysis! That saves me some time. I think I'll break this down to the major version only. As you said correctly, 15.7 would break it again otherwise. I have no clue why they had the great idea to suddenly include the minor version in there. They never did this since VS 2010.

@martosource @0x084E Gonna fix this somewhen this week when I have the time.