public List <LoadedAssembly> LoadAssemblies(List <string> paths, Extension requestingExtension, PackageDefinition packagingDefinition) { List <LoadedAssembly> results = new List <LoadedAssembly>(); List <AsyncTask> tasks = new List <AsyncTask>(); foreach (string path in paths) { if (ValidatePackagePath(path, requestingExtension)) { UnpackPackageTask task = new UnpackPackageTask(path, true); ProcessTaskDialog processDialog = new ProcessTaskDialog(task); if (!processDialog.TaskToExecute.IsCanceled) { string assemblyPath = Path.Combine(task.UnpackedPackage.Folder, task.UnpackedPackage.Manifest.DllPath); tasks.Add(new LoadAssemblyTask(assemblyPath, requestingExtension)); } } } ProcessTasksDialog dialog = new ProcessTasksDialog(ref tasks); dialog.ShowDialog(); foreach (LoadAssemblyTask task in tasks) { results.Add(task.LoadedAssembly); } return(results); }
public LoadedAssembly LoadAssembly(string path, Extension requestingExtension, PackageDefinition packagingDefinition) { if (ValidatePackagePath(path, requestingExtension)) { UnpackPackageTask unpackPackageTask = new UnpackPackageTask(path, true); ProcessTaskDialog dialog = new ProcessTaskDialog(unpackPackageTask); dialog.ShowDialog(); if (dialog.TaskToExecute.IsCanceled) { return(null); } PackageCacheEntry unpackedPackage = unpackPackageTask.UnpackedPackage; string assemblyPath = Path.Combine(unpackedPackage.Folder, unpackedPackage.Manifest.DllPath); LoadAssemblyTask loadAssemblyTask = new LoadAssemblyTask(assemblyPath, requestingExtension); dialog = new ProcessTaskDialog(loadAssemblyTask); dialog.ShowDialog(); if (dialog.TaskToExecute.IsCanceled) { return(null); } loadAssemblyTask.LoadedAssembly.PackagePath = path; loadAssemblyTask.LoadedAssembly.InPackage = true; return(loadAssemblyTask.LoadedAssembly); } else { return(null); } }