Mono.Cecil.BaseAssemblyResolver.GetCorlib C# (CSharp) Method

GetCorlib() private method

private GetCorlib ( AssemblyNameReference reference, ReaderParameters parameters ) : AssemblyDefinition
reference AssemblyNameReference
parameters ReaderParameters
return AssemblyDefinition
        AssemblyDefinition GetCorlib(AssemblyNameReference reference, ReaderParameters parameters)
        {
            var version = reference.Version;
            #if !NET_CORE
            var corlib = typeof (object).Assembly.GetName ();
            #else
            var corlib = typeof (object).GetTypeInfo().Assembly.GetName ();
            #endif

            if (corlib.Version == version || IsZero (version))
            #if !NET_CORE
                return GetAssembly (typeof (object).Module.FullyQualifiedName, parameters);
            #else
                return GetAssembly (typeof (object).GetTypeInfo().Module.FullyQualifiedName, parameters);
            #endif

            var path = Directory.GetParent (
                Directory.GetParent (
            #if !NET_CORE
                    typeof(object).Module.FullyQualifiedName).FullName
            #else
                    typeof(object).GetTypeInfo().Module.FullyQualifiedName).FullName
            #endif
                ).FullName;

            if (on_mono) {
                if (version.Major == 1)
                    path = Path.Combine (path, "1.0");
                else if (version.Major == 2) {
                    if (version.MajorRevision == 5)
                        path = Path.Combine (path, "2.1");
                    else
                        path = Path.Combine (path, "2.0");
                } else if (version.Major == 4)
                    path = Path.Combine (path, "4.0");
                else
                    throw new NotSupportedException ("Version not supported: " + version);
            } else {
                switch (version.Major) {
                case 1:
                    if (version.MajorRevision == 3300)
                        path = Path.Combine (path, "v1.0.3705");
                    else
                        path = Path.Combine (path, "v1.0.5000.0");
                    break;
                case 2:
                    path = Path.Combine (path, "v2.0.50727");
                    break;
                case 4:
                    path = Path.Combine (path, "v4.0.30319");
                    break;
                default:
                    throw new NotSupportedException ("Version not supported: " + version);
                }
            }

            var file = Path.Combine (path, "mscorlib.dll");
            if (File.Exists (file))
                return GetAssembly (file, parameters);

            return null;
        }