コード例 #1
0
            public override AssemblyReferenceBinding[] BindAssemblyReferences(
                ImmutableArray <AssemblyData> assemblies,
                AssemblyIdentityComparer assemblyIdentityComparer)
            {
                var boundReferences = new AssemblyReferenceBinding[_referencedAssemblies.Length];

                for (int i = 0; i < _referencedAssemblyData.Length; i++)
                {
                    Debug.Assert(ReferenceEquals(_referencedAssemblyData[i], assemblies[i + 1]));
                    boundReferences[i] = new AssemblyReferenceBinding(assemblies[i + 1].Identity, i + 1);
                }

                // references from added modules shouldn't resolve against the assembly being built (definition #0)
                const int definitionStartIndex = 1;

                // resolve references coming from linked modules:
                for (int i = _referencedAssemblyData.Length; i < _referencedAssemblies.Length; i++)
                {
                    boundReferences[i] = ResolveReferencedAssembly(
                        _referencedAssemblies[i],
                        assemblies,
                        definitionStartIndex,
                        assemblyIdentityComparer);
                }

                return(boundReferences);
            }
コード例 #2
0
        internal static AssemblyReferenceBinding[] ResolveReferencedAssemblies(ReadOnlyArray <AssemblyIdentity> references, AssemblyData[] definitions)
        {
            var boundReferences = new AssemblyReferenceBinding[references.Count];

            for (int j = 0; j < references.Count; j++)
            {
                boundReferences[j] = ResolveReferencedAssembly(references[j], definitions);
            }

            return(boundReferences);
        }
コード例 #3
0
        internal static AssemblyReferenceBinding[] ResolveReferencedAssemblies(
            ImmutableArray <AssemblyIdentity> references,
            ImmutableArray <AssemblyData> definitions,
            int definitionStartIndex,
            AssemblyIdentityComparer assemblyIdentityComparer)
        {
            var boundReferences = new AssemblyReferenceBinding[references.Length];

            for (int j = 0; j < references.Length; j++)
            {
                boundReferences[j] = ResolveReferencedAssembly(references[j], definitions, definitionStartIndex, assemblyIdentityComparer);
            }

            return(boundReferences);
        }
コード例 #4
0
        internal static AssemblyReferenceBinding[] ResolveReferencedAssemblies(
            ImmutableArray <AssemblyIdentity> references,
            ImmutableArray <AssemblyData> definitions,
            AssemblyIdentityComparer assemblyIdentityComparer,
            bool okToResolveAgainstCompilationBeingCreated)
        {
            var boundReferences = new AssemblyReferenceBinding[references.Length];

            for (int j = 0; j < references.Length; j++)
            {
                boundReferences[j] = ResolveReferencedAssembly(references[j], definitions, assemblyIdentityComparer, okToResolveAgainstCompilationBeingCreated);
            }

            return(boundReferences);
        }
コード例 #5
0
            public override AssemblyReferenceBinding[] BindAssemblyReferences(
                ImmutableArray <AssemblyData> assemblies,
                AssemblyIdentityComparer assemblyIdentityComparer)
            {
                var boundReferences = new AssemblyReferenceBinding[_referencedAssemblies.Length];

                for (int i = 0; i < _referencedAssemblyData.Length; i++)
                {
                    Debug.Assert(ReferenceEquals(_referencedAssemblyData[i], assemblies[i + 1]));
                    boundReferences[i] = new AssemblyReferenceBinding(assemblies[i + 1].Identity, i + 1);
                }

                // resolve references coming from linked modules:
                for (int i = _referencedAssemblyData.Length; i < _referencedAssemblies.Length; i++)
                {
                    boundReferences[i] = ResolveReferencedAssembly(
                        _referencedAssemblies[i],
                        assemblies,
                        assemblyIdentityComparer,
                        okToResolveAgainstCompilationBeingCreated: false); // references from added modules shouldn't resolve against the assembly we are building.
                }

                return(boundReferences);
            }