public void ComputeData()

in src/lib/Microsoft.Fx.Portability.MetadataReader/DependencyFinderEngineHelper.cs [66:133]


        public void ComputeData()
        {
            var provider = new MemberMetadataInfoTypeProvider(_reader);

            // Get type references
            foreach (var handle in _reader.TypeReferences)
            {
                try
                {
                    var entry = _reader.GetTypeReference(handle);
                    var typeInfo = provider.GetFullName(entry);
                    var assembly = GetAssembly(typeInfo);
                    var typeReferenceMemberDependency = CreateMemberDependency(typeInfo, assembly);

                    if (typeReferenceMemberDependency != null)
                    {
                        MemberDependency.Add(typeReferenceMemberDependency);
                    }
                }
                catch (BadImageFormatException)
                {
                    // Some obfuscators will inject dead types that break decompilers
                    // (for example, types that serve as each others' scopes).
                    //
                    // For portability/compatibility analysis purposes, though,
                    // we can skip such malformed references and just analyze those
                    // that we can successfully decode.
                }
            }

            if (_reader.MemberReferences.Any())
            {
                // Primitives need to have their assembly set, so we search for a
                // reference to System.Object that is considered a possible
                // framework assembly and use that for any primitives that don't
                // have an assembly
                if (_objectFinder.TryGetSystemRuntimeAssemblyInformation(_reader, out var systemObjectAssembly))
                {
                    // Get member references
                    foreach (var handle in _reader.MemberReferences)
                    {
                        try
                        {
                            var entry = _reader.GetMemberReference(handle);

                            var memberReferenceMemberDependency = GetMemberReferenceMemberDependency(entry, systemObjectAssembly);
                            if (memberReferenceMemberDependency != null)
                            {
                                MemberDependency.Add(memberReferenceMemberDependency);
                            }
                        }
                        catch (BadImageFormatException)
                        {
                            // Some obfuscators will inject dead types that break decompilers
                            // (for example, types that serve as each others' scopes).
                            //
                            // For portability/compatibility analysis purposes, though,
                            // we can skip such malformed references and just analyze those
                            // that we can successfully decode.
                        }
                    }
                }
                else
                {
                    throw new SystemObjectNotFoundException();
                }
            }
        }