From 71644bcae90e6e240f6b92554b58e771acb1b8b6 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Fri, 9 Aug 2019 11:45:49 +0200 Subject: [PATCH] #1625: Improve error message, if known assembly cannot be resolved. --- ILSpy.BamlDecompiler/Baml/KnownThings.cs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/ILSpy.BamlDecompiler/Baml/KnownThings.cs b/ILSpy.BamlDecompiler/Baml/KnownThings.cs index 5b82a0221..c5ab16072 100644 --- a/ILSpy.BamlDecompiler/Baml/KnownThings.cs +++ b/ILSpy.BamlDecompiler/Baml/KnownThings.cs @@ -45,11 +45,15 @@ namespace ILSpy.BamlDecompiler.Baml { strings = new Dictionary(); resources = new Dictionary(); - InitAssemblies(); - InitTypes(); - InitMembers(); - InitStrings(); - InitResources(); + try { + InitAssemblies(); + InitTypes(); + InitMembers(); + InitStrings(); + InitResources(); + } catch (Exception ex) { + throw new ICSharpCode.Decompiler.DecompilerException(typeSystem.MainModule.PEFile, ex.Message, ex); + } } public Func Types => id => types[id]; @@ -57,7 +61,14 @@ namespace ILSpy.BamlDecompiler.Baml { public Func Strings => id => strings[id]; public Func Resources => id => resources[id]; public IModule FrameworkAssembly => assemblies[0]; - IModule ResolveAssembly(string name) => typeSystem.Modules.First(m => m.FullAssemblyName == name); + IModule ResolveAssembly(string name) + { + IModule module = typeSystem.Modules.FirstOrDefault(m => m.FullAssemblyName == name); + if (module == null) + throw new Exception("Could not resolve known assembly '" + name + "'!"); + return module; + } + ITypeDefinition InitType(IModule assembly, string ns, string name) => assembly.GetTypeDefinition(new TopLevelTypeName(ns, name)); KnownMember InitMember(KnownTypes parent, string name, ITypeDefinition type) => new KnownMember(parent, types[parent], name, type); }