Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
     }
 }