Workflow Foundation 4 Imports面板未刷新

时间:2012-10-01 12:52:54

标签: workflow-foundation-4

我想将新的引用导入到我的工作流设计器中,但是我遇到了一个奇怪的问题。

这是我导入引用的代码。

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”面板没有刷新...

有什么想法吗?

感谢您的帮助。

2 个答案:

答案 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