public void AddPluginAssembly(PluginAssemblyAndTypes pluginAssemblyAndTypes, Solution solution)
        {
            var id = orgService.Create(pluginAssemblyAndTypes.PluginAssembly);

            pluginAssemblyAndTypes.PluginAssembly.Id = id;
            AddComponentToSolution(solution, id, componenttype.PluginAssembly);
            UpsertAssemblyTypes(pluginAssemblyAndTypes, solution);
        }
        protected override void PreStatusProcessing()
        {
            localPluginAssemblyAndTypes = dllReader.ReadDll();
            var editablePluginAssembliesInSolution = pluginAssemblyQueryingUtilities.RetrievePluginAssembliesForSolution(SolutionWithPublisher.Solution.Id);

            preExistingPluginAssembly = FindMatchingAssembly(editablePluginAssembliesInSolution);
            if (preExistingPluginAssembly == null)
            {
                RunNewAssemblyChecks();
            }
            else
            {
                RunUpdatedAssemblyChecks();
            }
        }
 public void UpsertAssemblyTypes(PluginAssemblyAndTypes pluginAssemblyAndTypes, Solution solution)
 {
     pluginAssemblyAndTypes.Types.PluginTypes.ForEach(pt => UpsertPluginType(pt, pluginAssemblyAndTypes.PluginAssembly, solution));
     pluginAssemblyAndTypes.Types.CustomWorkflowTypes.ForEach(cwat => UpsertCustomWorkflowActivityType(cwat, pluginAssemblyAndTypes.PluginAssembly, solution));
 }