0

我想将一个新的引用导入到我的 Workflow Designer 中,但是我遇到了一个奇怪的问题。

这是我导入参考的代码。

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;
}

它在我第一次加载我的设计器时工作,程序集很好地添加到哈希集 ImportReferences 然后我还在“导入”面板中看到命名空间。但是当我在用户通过选择器对话框选择 dll 时调用上述方法时,我调用上面的代码,程序集也很好地添加到 ImportReferences,但是“导入”面板没有刷新......

有任何想法吗 ?

谢谢你的帮助。

4

2 回答 2

0

您是否尝试过DesignerView.OnReferenceUpdated?看来您正在寻找什么:

如果添加了引用的程序集,则会将在程序集中找到的类型的命名空间添加到导入的命名空间列表中。如果删除了引用的程序集,则程序集中找到的类型的命名空间将从导入的命名空间列表中删除。

使用示例:

var designerView = workflowDesigner.Context.Services.GetService<DesignerView>();
designerView.OnReferenceUpdated(assemblyName, true/false);
于 2012-10-01T13:43:13.003 回答
0

实际上,命名空间很好导入,它被隐藏在上面的下拉列表中。

这是导入命名空间的最简单代码。 http://blogs.msdn.com/b/tilovell/archive/2011/11/02/wf4-adding-vb-namespace-imports-to-your-workflow-programmatically.aspx

于 2012-10-10T10:11:32.933 回答