我想将新的引用导入到我的工作流设计器中,但是我遇到了一个奇怪的问题。
这是我导入引用的代码。
var root = GetRootElement();
VisualBasicSettings vbs = VisualBasic.GetSettings(root);
vbs.ImportReferences.Add(new VisualBasicImportReference { Assembly = Assembly.Load("Castle.Core").FullName, Import = "Castle.Core.Configuration.Xml" });
private object GetRootElement()
{
var modelservice = workflowDesigner.Context.Services.GetService<ModelService>();
if (modelservice == null)
return null;
var rootmodel = modelservice.Root.GetCurrentValue();
return rootmodel;
}
当我第一次加载我的设计器时,它可以正常工作,组件很好地添加到hashset的ImportReferences中,然后我也在“Imports”面板中看到命名空间。但是当用户通过选择器对话框选择一个dll时调用上面的方法,我调用上面的代码,程序集也很好地添加到ImportReferences,但“Imports”面板没有刷新...
有什么想法吗?
感谢您的帮助。
答案 0 :(得分:0)
你试过DesignerView.OnReferenceUpdated吗?看起来你正在寻找:
如果添加了引用的程序集,则找到类型的名称空间 在程序集中添加到导入的命名空间列表中。如果 删除引用的程序集,找到类型的名称空间 程序集将从导入的命名空间列表中删除。
用法示例:
var designerView = workflowDesigner.Context.Services.GetService<DesignerView>();
designerView.OnReferenceUpdated(assemblyName, true/false);
答案 1 :(得分:0)
实际上,命名空间已经很好地导入了,它隐藏在上面的下拉列表中。
这是导入命名空间的最简单代码。 http://blogs.msdn.com/b/tilovell/archive/2011/11/02/wf4-adding-vb-namespace-imports-to-your-workflow-programmatically.aspx