예제 #1
0
            void SetReferencesOfReferencedModules(MetadataReferenceResolver resolver, List <PEModuleSymbol> modules)
            {
                for (int i = 0; i < modules.Count; i++)
                {
                    if (modules[i].HasReferencesSet)
                    {
                        // module is already cached with references set
                        continue;
                    }

                    var refs     = modules[i].Module.ReferencedAssemblies;
                    var symbols  = new AssemblySymbol[refs.Length];
                    var ass      = modules[i].ContainingAssembly;
                    var basePath = PathUtilities.GetDirectoryName((ass as PEAssemblySymbol)?.FilePath);

                    for (int j = 0; j < refs.Length; j++)
                    {
                        var symbol = CreateAssemblyFromIdentity(resolver, refs[j], basePath, modules);
                        symbols[j] = symbol;
                    }

                    //
                    modules[i].SetReferences(new ModuleReferences <AssemblySymbol>(refs, symbols.AsImmutable(), ImmutableArray <UnifiedAssembly <AssemblySymbol> > .Empty));
                }
            }
예제 #2
0
            void SetReferencesOfReferencedModules(MetadataReferenceResolver resolver, List <PEModuleSymbol> modules)
            {
                for (int i = 0; i < modules.Count; i++)
                {
                    var refs    = modules[i].Module.ReferencedAssemblies;
                    var symbols = new AssemblySymbol[refs.Length];

                    for (int j = 0; j < refs.Length; j++)
                    {
                        var symbol = CreateAssemblyFromIdentity(resolver, refs[j], null, modules);
                        symbols[j] = symbol;
                    }

                    //
                    modules[i].SetReferences(new ModuleReferences <AssemblySymbol>(refs, symbols.AsImmutable(), ImmutableArray <UnifiedAssembly <AssemblySymbol> > .Empty));
                }
            }