diff --git a/src/WorkspaceDependencyViewExtension/WorkspaceDependencyView.xaml.cs b/src/WorkspaceDependencyViewExtension/WorkspaceDependencyView.xaml.cs index 20fbae6a6d6..0f6912f0dce 100644 --- a/src/WorkspaceDependencyViewExtension/WorkspaceDependencyView.xaml.cs +++ b/src/WorkspaceDependencyViewExtension/WorkspaceDependencyView.xaml.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; @@ -137,9 +137,9 @@ internal void DependencyRegen(WorkspaceModel ws, bool forceCompute = false) RestartBanner.Visibility = Visibility.Hidden; ws.ForceComputeWorkspaceReferences = forceCompute; - var packageDependencies = ws.NodeLibraryDependencies.Where(d => d is PackageDependencyInfo).ToList(); - var localDefinitions = ws.NodeLocalDefinitions.Where(d => d is DependencyInfo).ToList(); - var externalFiles = ws.ExternalFiles.Where(d => d is DependencyInfo).ToList(); + var packageDependencies = ws.NodeLibraryDependencies?.Where(d => d is PackageDependencyInfo).ToList(); + var localDefinitions = ws.NodeLocalDefinitions?.Where(d => d is DependencyInfo).ToList(); + var externalFiles = ws.ExternalFiles?.Where(d => d is DependencyInfo).ToList(); foreach (DependencyInfo info in localDefinitions) { @@ -187,9 +187,16 @@ internal void DependencyRegen(WorkspaceModel ws, bool forceCompute = false) foreach (var package in dependencyViewExtension.pmExtension.PackageLoader.LocalPackages.Where(x => x.LoadState.ScheduledState == PackageLoadState.ScheduledTypes.ScheduledForDeletion || x.LoadState.ScheduledState == PackageLoadState.ScheduledTypes.ScheduledForUnload)) { - (packageDependencies.FirstOrDefault(x => x.Name == package.Name) as PackageDependencyInfo).State = + try + { + (packageDependencies.FirstOrDefault(x => x.Name == package.Name) as PackageDependencyInfo).State = PackageDependencyState.RequiresRestart; - hasPackageMarkedForUninstall = true; + hasPackageMarkedForUninstall = true; + } + catch (Exception ex) + { + dependencyViewExtension.OnMessageLogged(LogMessage.Info(string.Format(Properties.Resources.DependencyViewExtensionErrorTemplate, $"failure to set package uninstall state |{ ex.ToString()}"))); + } } RestartBanner.Visibility = hasPackageMarkedForUninstall ? Visibility.Visible: Visibility.Hidden; @@ -200,10 +207,17 @@ internal void DependencyRegen(WorkspaceModel ws, bool forceCompute = false) { foreach (PackageDependencyInfo packageDependencyInfo in packageDependencies) { - var targetInfo = pmExtension.PackageLoader.LocalPackages.Where(x => x.Name == packageDependencyInfo.Name).FirstOrDefault(); - if (targetInfo != null) + try + { + var targetInfo = pmExtension.PackageLoader.LocalPackages.Where(x => x.Name == packageDependencyInfo.Name).FirstOrDefault(); + if (targetInfo != null) + { + packageDependencyInfo.Path = targetInfo.RootDirectory; + } + } + catch (Exception ex) { - packageDependencyInfo.Path = targetInfo.RootDirectory; + dependencyViewExtension.OnMessageLogged(LogMessage.Info(string.Format(Properties.Resources.DependencyViewExtensionErrorTemplate, ex.ToString()))); } } }