private string FindAssemblyName(string name)
{
var assemblyName = new AssemblyName(name);
Dictionary<AssemblyName, string> subMap;
if (!_mapByName.TryGetValue(assemblyName.Name, out subMap))
{
return null;
}
foreach (var entry in subMap)
{
// do weak assembly name matching, matching only values specified in assembly name
if (assemblyName.Version != null && assemblyName.Version != entry.Key.Version)
continue;
if (assemblyName.CultureInfo != null && !assemblyName.CultureInfo.Equals(entry.Key.CultureInfo))
continue;
if (!PublicKeysTokenEqual(assemblyName.GetPublicKeyToken(), entry.Key.GetPublicKeyToken()))
continue;
return entry.Value;
}
return null;
}