protected IEnumerable <MetadataReference> ResolveReferences(MetadataReferenceResolver metadataReferenceResolver) { List <MetadataReference> references = new List <MetadataReference> { MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location) }; foreach (MetadataReference reference in MetadataReferences) { UnresolvedMetadataReference unresolved = reference as UnresolvedMetadataReference; if (unresolved != null) { ImmutableArray <PortableExecutableReference> resolved = metadataReferenceResolver.ResolveReference(unresolved.Reference, null, unresolved.Properties); references.AddRange(resolved); } else { references.Add(reference); } } return(references); }
private static string?GetFilePath(MetadataReference metadataReference) { return(metadataReference switch { PortableExecutableReference portableExecutableReference => portableExecutableReference.FilePath, UnresolvedMetadataReference unresolvedMetadataReference => unresolvedMetadataReference.Reference, _ => null, });