From 660d8ca17a626b1cd8e8f3cf760a0dc7820ca847 Mon Sep 17 00:00:00 2001 From: Edward Cooke Date: Fri, 18 Jan 2019 21:28:17 -0700 Subject: [PATCH] Add option to not reload assemblies --- ILSpy/MainWindow.xaml.cs | 17 ++++++++++++----- ILSpy/Options/MiscSettings.cs | 14 ++++++++++++++ ILSpy/Options/MiscSettingsPanel.xaml | 1 + ILSpy/Options/MiscSettingsPanel.xaml.cs | 3 +++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index 68e57b8d7..eb6645312 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -362,15 +362,22 @@ namespace ICSharpCode.ILSpy { ILSpySettings spySettings = this.spySettings; this.spySettings = null; + var loadPreviousAssemblies = Options.MiscSettingsPanel.CurrentMiscSettings.LoadPreviousAssemblies; - // Load AssemblyList only in Loaded event so that WPF is initialized before we start the CPU-heavy stuff. - // This makes the UI come up a bit faster. - this.assemblyList = assemblyListManager.LoadList(spySettings, sessionSettings.ActiveAssemblyList); + if (loadPreviousAssemblies) { + // Load AssemblyList only in Loaded event so that WPF is initialized before we start the CPU-heavy stuff. + // This makes the UI come up a bit faster. + this.assemblyList = assemblyListManager.LoadList(spySettings, sessionSettings.ActiveAssemblyList); + } else { + this.assemblyList = new AssemblyList(AssemblyListManager.DefaultListName); + assemblyListManager.ClearAll(); + } HandleCommandLineArguments(App.CommandLineArguments); if (assemblyList.GetAssemblies().Length == 0 - && assemblyList.ListName == AssemblyListManager.DefaultListName) { + && assemblyList.ListName == AssemblyListManager.DefaultListName + && loadPreviousAssemblies) { LoadInitialAssemblies(); } @@ -731,7 +738,7 @@ namespace ICSharpCode.ILSpy OpenFiles(dlg.FileNames); } } - + public void OpenFiles(string[] fileNames, bool focusNode = true) { if (fileNames == null) diff --git a/ILSpy/Options/MiscSettings.cs b/ILSpy/Options/MiscSettings.cs index 2df04770d..a78cc8609 100644 --- a/ILSpy/Options/MiscSettings.cs +++ b/ILSpy/Options/MiscSettings.cs @@ -24,6 +24,7 @@ namespace ICSharpCode.ILSpy.Options public class MiscSettings : INotifyPropertyChanged { bool allowMultipleInstances; + bool loadPreviousAssemblies; /// /// Allow multiple instances. @@ -39,6 +40,19 @@ namespace ICSharpCode.ILSpy.Options } } + /// + /// Load assemblies that were loaded in the previous instance + /// + public bool LoadPreviousAssemblies { + get { return loadPreviousAssemblies; } + set { + if (loadPreviousAssemblies != value) { + loadPreviousAssemblies = value; + OnPropertyChanged(); + } + } + } + #region INotifyPropertyChanged Implementation public event PropertyChangedEventHandler PropertyChanged; diff --git a/ILSpy/Options/MiscSettingsPanel.xaml b/ILSpy/Options/MiscSettingsPanel.xaml index 89d242cb2..3c86cc2ff 100644 --- a/ILSpy/Options/MiscSettingsPanel.xaml +++ b/ILSpy/Options/MiscSettingsPanel.xaml @@ -7,5 +7,6 @@ d:DesignHeight="300" d:DesignWidth="300"> Allow multiple instances + Load assemblies that were loaded in the last instance. diff --git a/ILSpy/Options/MiscSettingsPanel.xaml.cs b/ILSpy/Options/MiscSettingsPanel.xaml.cs index 538652633..d196086a8 100644 --- a/ILSpy/Options/MiscSettingsPanel.xaml.cs +++ b/ILSpy/Options/MiscSettingsPanel.xaml.cs @@ -50,6 +50,8 @@ namespace ICSharpCode.ILSpy.Options XElement e = settings["MiscSettings"]; var s = new MiscSettings(); s.AllowMultipleInstances = (bool?)e.Attribute("AllowMultipleInstances") ?? false; + s.LoadPreviousAssemblies = (bool?)e.Attribute(nameof(s.LoadPreviousAssemblies)) ?? true; + return s; } @@ -59,6 +61,7 @@ namespace ICSharpCode.ILSpy.Options var section = new XElement("MiscSettings"); section.SetAttributeValue("AllowMultipleInstances", s.AllowMultipleInstances); + section.SetAttributeValue(nameof(s.LoadPreviousAssemblies), s.LoadPreviousAssemblies); XElement existingElement = root.Element("MiscSettings"); if (existingElement != null)