public static void AddDyanamicAssembly(System.Activities.Presentation.WorkflowDesigner WorkflowDesigner, System.Activities.Presentation.Hosting.AssemblyContextControlItem acci, Assembly asm) { if (!acci.ReferencedAssemblyNames.Select(x => x.FullName).Contains(asm.GetName().FullName)) { acci.ReferencedAssemblyNames.Add(asm.GetName()); WorkflowDesigner.Context.Items.SetValue(acci); } var root = GetRootElement(WorkflowDesigner); var fullname = asm.FullName; var asmname = asm.GetName().Name; if (null == root) { return; } var vbs = Microsoft.VisualBasic.Activities.VisualBasic.GetSettings(root) ?? new Microsoft.VisualBasic.Activities.VisualBasicSettings(); var namespaces = (from type in asm.GetTypes() select type.Namespace).Distinct(); foreach (var name in namespaces) { if (string.IsNullOrEmpty(name)) { continue; } var import = new Microsoft.VisualBasic.Activities.VisualBasicImportReference() { Assembly = asmname, Import = name }; vbs.ImportReferences.Add(import); } Microsoft.VisualBasic.Activities.VisualBasic.SetSettings(root, vbs); }
public static void RemoveDynamicAssembly(System.Activities.Presentation.WorkflowDesigner WorkflowDesigner, System.Activities.Presentation.Hosting.AssemblyContextControlItem acci, Assembly asm) { if (acci.ReferencedAssemblyNames.Contains(asm.GetName())) { acci.ReferencedAssemblyNames.Remove(asm.GetName()); WorkflowDesigner.Context.Items.SetValue(acci); } var root = GetRootElement(WorkflowDesigner); if (null == root) { return; } var vbs = Microsoft.VisualBasic.Activities.VisualBasic.GetSettings(root) ?? new Microsoft.VisualBasic.Activities.VisualBasicSettings(); var namespaces = (from type in asm.GetTypes() select type.Namespace).Distinct(); var fullname = asm.FullName; foreach (var name in namespaces) { var theimport = (from importname in vbs.ImportReferences where importname.Assembly == fullname where importname.Import == name select importname).FirstOrDefault(); if (theimport != null) { vbs.ImportReferences.Remove(theimport); } } Microsoft.VisualBasic.Activities.VisualBasic.SetSettings(root, vbs); }