protected override int GetIndexOfReferencedAssembly(AssemblyIdentity identity) { // Find assembly matching identity. int index = this.Module.GetReferencedAssemblies().IndexOf(identity); if (index >= 0) { return index; } if (identity.IsWindowsComponent()) { // Find placeholder Windows.winmd assembly (created // in MetadataUtilities.MakeAssemblyReferences). var assemblies = this.Module.GetReferencedAssemblySymbols(); index = assemblies.IndexOf((assembly, unused) => assembly.Identity.IsWindowsRuntime(), (object)null); if (index >= 0) { // Find module in Windows.winmd matching identity. var modules = assemblies[index].Modules; var moduleIndex = modules.IndexOf((m, id) => id.Equals(GetComponentAssemblyIdentity(m)), identity); if (moduleIndex >= 0) { return index; } } } return -1; }