diff --git a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin index ce4ae66e32..3e0f0d2e62 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin +++ b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin @@ -77,6 +77,15 @@ + + + + + + (); - var modelFactory = SD.GetService(); - if ((classBrowser != null) && (modelFactory != null)) { + if (classBrowser != null) { IAssemblyModel assemblyModel = (IAssemblyModel) parameter; // Create a new copy of this assembly model - IAssemblyModel newAssemblyModel = modelFactory.SafelyCreateAssemblyModelFromFile(assemblyModel.Context.Location); + IAssemblyModel newAssemblyModel = SD.AssemblyParserService.GetAssemblyModelSafe(new ICSharpCode.Core.FileName(assemblyModel.Context.Location), true); if (newAssemblyModel != null) classBrowser.MainAssemblyList.Assemblies.Add(newAssemblyModel); } diff --git a/src/AddIns/Debugger/Debugger.AddIn/Service/DebuggerCommands.cs b/src/AddIns/Debugger/Debugger.AddIn/Service/DebuggerCommands.cs index 76b61a22a7..c6ab15ce1a 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Service/DebuggerCommands.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Service/DebuggerCommands.cs @@ -115,7 +115,7 @@ namespace Debugger.AddIn } } else { OpenFileDialog dialog = new OpenFileDialog() { - Filter = ".NET Executable (*.exe) | *.exe", + Filter = ".NET executable|*.exe", RestoreDirectory = true, DefaultExt = "exe" }; diff --git a/src/Main/Base/Project/Dom/ModelFactoryExtensions.cs b/src/Main/Base/Project/Dom/ModelFactoryExtensions.cs deleted file mode 100644 index 18cb634bd2..0000000000 --- a/src/Main/Base/Project/Dom/ModelFactoryExtensions.cs +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) - -using System; -using System.Linq; -using System.IO; -using ICSharpCode.Core; -using ICSharpCode.NRefactory; -using ICSharpCode.NRefactory.TypeSystem; -using Mono.Cecil; -using ICSharpCode.SharpDevelop.Parser; - -namespace ICSharpCode.SharpDevelop.Dom -{ - public static class ModelFactoryExtensions - { - /// - /// Creates an from a file name and catches - /// errors by showing messages to user. - /// - /// Model factory. - /// Assembly file name. - /// - /// Created or null, - /// if model couldn't be created. - /// - public static IAssemblyModel SafelyCreateAssemblyModelFromFile(this IModelFactory modelFactory, string fileName) - { - try { - return SD.AssemblyParserService.GetAssemblyModel(new FileName(fileName), true, modelFactory); - } catch (BadImageFormatException) { - SD.MessageService.ShowWarningFormatted("${res:ICSharpCode.SharpDevelop.Dom.AssemblyInvalid}", Path.GetFileName(fileName)); - } catch (FileNotFoundException) { - SD.MessageService.ShowWarningFormatted("${res:ICSharpCode.SharpDevelop.Dom.AssemblyNotAccessible}", fileName); - } - - return null; - } - } -} \ No newline at end of file diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index cdb63cb3f9..b96824ede0 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -118,7 +118,6 @@ - diff --git a/src/Main/Base/Project/Parser/IAssemblyParserService.cs b/src/Main/Base/Project/Parser/IAssemblyParserService.cs index 9562056fed..4dc13180d4 100644 --- a/src/Main/Base/Project/Parser/IAssemblyParserService.cs +++ b/src/Main/Base/Project/Parser/IAssemblyParserService.cs @@ -57,6 +57,18 @@ namespace ICSharpCode.SharpDevelop.Parser /// Creates an IAssemblyModel for the given assembly file. /// IAssemblyModel GetAssemblyModel(FileName fileName, bool includeInternalMembers = false); + + /// + /// Creates an from a file name and catches + /// errors by showing messages to user. + /// + /// Model factory. + /// Assembly file name. + /// + /// Created or null, + /// if model couldn't be created. + /// + IAssemblyModel GetAssemblyModelSafe(FileName fileName, bool includeInternalMembers = false); } public interface IAssemblySearcher diff --git a/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs b/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs index 9381f37bff..4cddf46b43 100644 --- a/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs +++ b/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs @@ -230,7 +230,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser { var modelFactory = SD.GetRequiredService(); try { - return SD.AssemblyParserService.GetAssemblyModel(new FileName(fileName), false, modelFactory); + return SD.AssemblyParserService.GetAssemblyModel(new FileName(fileName), true); } catch (Exception) { // Special AssemblyModel for unresolved file references IEntityModelContext unresolvedContext = new UnresolvedAssemblyEntityModelContext(Path.GetFileName(fileName), fileName); diff --git a/src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs b/src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs index fd72bb2a5f..5caa8a5720 100644 --- a/src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs +++ b/src/Main/SharpDevelop/Dom/ClassBrowser/Commands.cs @@ -24,9 +24,8 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser openFileDialog.Filter = "Assembly files (*.exe, *.dll)|*.exe;*.dll"; openFileDialog.CheckFileExists = true; openFileDialog.CheckPathExists = true; - if (openFileDialog.ShowDialog() ?? false) - { - IAssemblyModel assemblyModel = modelFactory.SafelyCreateAssemblyModelFromFile(openFileDialog.FileName); + if (openFileDialog.ShowDialog() ?? false) { + IAssemblyModel assemblyModel = SD.AssemblyParserService.GetAssemblyModelSafe(new ICSharpCode.Core.FileName(openFileDialog.FileName), true); if (assemblyModel != null) classBrowser.MainAssemblyList.Assemblies.Add(assemblyModel); } @@ -48,7 +47,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser if (gacDialog.ShowDialog() ?? false) { foreach (string assemblyFile in gacDialog.SelectedFileNames) { - IAssemblyModel assemblyModel = modelFactory.SafelyCreateAssemblyModelFromFile(assemblyFile); + IAssemblyModel assemblyModel = SD.AssemblyParserService.GetAssemblyModelSafe(new ICSharpCode.Core.FileName(assemblyFile), true); if (assemblyModel != null) classBrowser.MainAssemblyList.Assemblies.Add(assemblyModel); } diff --git a/src/Main/SharpDevelop/Parser/AssemblyParserService.cs b/src/Main/SharpDevelop/Parser/AssemblyParserService.cs index 4690909f61..d976b97e0c 100644 --- a/src/Main/SharpDevelop/Parser/AssemblyParserService.cs +++ b/src/Main/SharpDevelop/Parser/AssemblyParserService.cs @@ -330,5 +330,18 @@ namespace ICSharpCode.SharpDevelop.Parser return model; } + + public IAssemblyModel GetAssemblyModelSafe(FileName fileName, bool includeInternalMembers = false) + { + try { + return GetAssemblyModel(fileName, includeInternalMembers); + } catch (BadImageFormatException) { + SD.MessageService.ShowWarningFormatted("${res:ICSharpCode.SharpDevelop.Dom.AssemblyInvalid}", Path.GetFileName(fileName)); + } catch (FileNotFoundException) { + SD.MessageService.ShowWarningFormatted("${res:ICSharpCode.SharpDevelop.Dom.AssemblyNotAccessible}", fileName); + } + + return null; + } } }