private static Assembly ResolveAssembly(object sender, ResolveEventArgs args)
{
var requestedName = new AssemblyName(args.Name);
if (knownAssemblies.ContainsKey(requestedName.Name))
{
foreach (var item in knownAssemblies[requestedName.Name])
{
if (requestedName.Name == item.Item1.Name &&
(requestedName.Version == null || requestedName.Version == item.Item1.Version) &&
(requestedName.CultureInfo == null || requestedName.CultureInfo == item.Item1.CultureInfo) &&
(requestedName.GetPublicKey() == null || requestedName.GetPublicKey() == item.Item1.GetPublicKey()))
{
var path = Path.Combine(item.Item2, requestedName.Name + ".dll");
if (File.Exists(path))
return Assembly.LoadFrom(path);
}
}
}
foreach (var directory in searchDirectories)
{
var path = Path.Combine(directory, requestedName.Name + ".dll");
if (File.Exists(path))
return Assembly.LoadFrom(path);
}
return null;
}