protected MefBootstrapper() { AdditionalCatalogs = new AggregateCatalog(); IgnorePathPatterns = new List <string>(); _bootrapperConfiguration = new BootrapperConfiguration(); AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.AssemblyResolve += TryResolveMissingAssembly; }
protected override IEnumerable <Assembly> SelectAssemblies() { _bootrapperConfiguration = new BootrapperConfiguration(); if (DesignTimeHelper.IsInDesignModeStatic) { return(null); } var paths = new List <string>(); // collect all assemblies with catalog and safe it for later use var uri = new Uri(Assembly.GetAssembly(typeof(MefBootstrapper)).CodeBase); string rootPath = GetRootPath(uri.LocalPath); paths.Add(rootPath); foreach (var additionalLookupPath in _bootrapperConfiguration.AdditionalLookupPaths) { paths.Add(rootPath + "\\" + additionalLookupPath); } var logger = new Log4NetLogger(); logger.Init(GetType()); _recursiveDirectoryCatalog = new SafeRecursiveDirectoryCatalog( logger, paths.ToArray(), _bootrapperConfiguration.MEFAssemblyNamePattern, _bootrapperConfiguration.IgnorePathPatterns); IList <Assembly> list = new List <Assembly>(); list.Add(Assembly.GetEntryAssembly()); foreach (string assemblyPath in _recursiveDirectoryCatalog.LoadedAssemblies) { list.Add(Assembly.LoadFrom(assemblyPath)); } return(list); }