static Task <CompilerMetadataReference[]> CreateCompilerMetadataReferencesAsync(MethodDef method, AssemblyReferenceResolver assemblyReferenceResolver, IEnumerable <string> extraAssemblyReferences, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var modules = new HashSet <ModuleDef>(new MetadataReferenceFinder(method.Module, cancellationToken).Find(extraAssemblyReferences)); var mdRefs = new List <CompilerMetadataReference>(); foreach (var module in modules) { cancellationToken.ThrowIfCancellationRequested(); CompilerMetadataReference?cmr; if (module.IsManifestModule) { cmr = assemblyReferenceResolver.Create(module.Assembly); } else { cmr = assemblyReferenceResolver.Create(module); } if (cmr == null) { continue; } mdRefs.Add(cmr.Value); } return(Task.FromResult(mdRefs.ToArray())); }
void AddReferences(ModuleDef[] modules) { var mdRefs = new List <CompilerMetadataReference>(); foreach (var module in modules) { CompilerMetadataReference?cmr; if (module.IsManifestModule) { cmr = assemblyReferenceResolver.Create(module.Assembly); } else { cmr = assemblyReferenceResolver.Create(module); } if (cmr == null) { continue; } mdRefs.Add(cmr.Value); } if (mdRefs.Count == 0) { return; } try { if (!languageCompiler.AddMetadataReferences(mdRefs.ToArray())) { MsgBox.Instance.Show(dnSpy_AsmEditor_Resources.Error_CouldNotAddAssemblyReferences); } } catch (Exception ex) { MsgBox.Instance.Show(ex); } }