public void BeginOpenAssemblies(string[] filenames, bool partialTrust) { if (filenames.Length == 0) { return; } // Create Assembly objects with AppDomains foreach (string fn in filenames) { string baseFolder = Path.GetFullPath(Path.Combine(fn, "..")); if (!_assemblies.Any(a => a.Path == fn)) { var ass = _assemblies.FirstOrDefault(a => a.Domain.BaseFolder == baseFolder && a.Domain.PartialTrust == partialTrust); var adh = ass != null ? ass.Domain : new AppDomainHolder(baseFolder, Path.GetFileNameWithoutExtension(fn), partialTrust); _assemblies.Add(new Assembly { Path = fn, Domain = adh }); } } // Start scan tasks var newTasks = new List <AssemblyScanTask>(); foreach (var ass in _assemblies.Where(a => a.Row == null)) { #pragma warning disable 618 // method is "obsolete" in .NET4 but its replacement does not exist in .NET 3.5 var task = (AssemblyScanTask)Activator.CreateInstanceFrom(ass.Domain.Domain, typeof(AssemblyScanTask).Assembly.ManifestModule.FullyQualifiedName, typeof(AssemblyScanTask).FullName, false, 0, null, new object[] { ass.Path, ass.Domain.BaseFolder }, null, null, null).Unwrap(); ass.Row = new TaskRowModel(Path.GetFileName(ass.Path), TestNodeType.Assembly, task, false); newTasks.Add(task); } _runner.AddTasks(newTasks.Upcast <ITask, AssemblyScanTask>()); _runner.AutoStartTasks(); }