From e325b7c907b43997395bab94b1b5593c8bb20400 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 9 Sep 2017 09:59:59 +0200 Subject: [PATCH] Add comments --- ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs b/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs index 63b71f6bb..7cc996073 100644 --- a/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs +++ b/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs @@ -44,6 +44,8 @@ namespace ICSharpCode.Decompiler.TypeSystem CecilLoader cecilLoader = new CecilLoader { IncludeInternalMembers = true, LazyLoad = true, OnEntityLoaded = StoreMemberReference, ShortenInterfaceImplNames = false }; typeReferenceCecilLoader.SetCurrentModule(moduleDefinition); IUnresolvedAssembly mainAssembly = cecilLoader.LoadModule(moduleDefinition); + // Load referenced assemblies and type-forwarder references. + // This is necessary to make .NET Core/PCL binaries work better. var referencedAssemblies = new List(); var assemblyReferenceQueue = new Queue(moduleDefinition.AssemblyReferences); var processedAssemblyReferences = new HashSet(KeyComparer.Create((AssemblyNameReference reference) => reference.FullName)); @@ -61,6 +63,8 @@ namespace ICSharpCode.Decompiler.TypeSystem } } compilation = new SimpleCompilation(mainAssembly, referencedAssemblies); + // Primitive types are necessary to avoid assertions in ILReader. + // Fallback to MinimalCorlib to provide the primitive types. if (compilation.FindType(KnownTypeCode.Void).Kind == TypeKind.Unknown || compilation.FindType(KnownTypeCode.Void).Kind == TypeKind.Unknown) { referencedAssemblies.Add(MinimalCorlib.Instance); compilation = new SimpleCompilation(mainAssembly, referencedAssemblies);