using System; using System.Collections.Generic; using System.IO; using System.Reflection; namespace MbUnit.ReSharperRunner { public class PlugInAssemblyResolver { public Assembly ResolveAssembly(object sender, ResolveEventArgs args) { return ResolveAssembly(args.Name); } private static Assembly ResolveAssembly(string assemblyName) { string[] fileNames = GetFilenames(assemblyName); List paths = new List(); paths.Add(Environment.CurrentDirectory); paths.Add(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); foreach (string path in paths) { foreach (string fileName in fileNames) { string assemblyFile = Path.Combine(path, fileName); if (File.Exists(assemblyFile)) { return Assembly.LoadFrom(assemblyFile); } } } return null; } private static string[] GetFilenames(string name) { List fileNames = new List(); string[] nameSegments = name.Split(new char[] {','}); fileNames.Add(Path.GetFileName(nameSegments[0])); fileNames.Add(Path.GetFileName(nameSegments[0]) + ".dll"); fileNames.Add(Path.GetFileNameWithoutExtension(nameSegments[0]) + ".dll"); fileNames.Add(Path.GetFileNameWithoutExtension(nameSegments[0]) + ".exe"); fileNames.Add(Path.GetFileName(nameSegments[0]) + ".exe"); fileNames.Add(nameSegments[0]); return fileNames.ToArray(); } } }