【发布时间】:2016-05-24 22:42:39
【问题描述】:
我已经阅读了多个关于此的教程/博客/stackoverflow 问题,包括以下内容:
- http://geekswithblogs.net/jkurtz/archive/2010/01/26/137639.aspx
- http://blogs.msdn.com/b/tilovell/archive/2011/05/08/iregistermetadata-and-best-practice-associating-workflow-activity-designers.aspx
- https://msdn.microsoft.com/en-us/library/dd489419(v=vs.110).aspx
- http://blogs.msdn.com/b/rjacobs/archive/2011/08/14/how-to-create-a-custom-activity-designer-with-windows-workflow-foundation-wf4.aspx
- Creating custom activity design without reference to Design DLL in Windows Workflow Foundation
还有更多。
它们中的大多数已经过时了。 有人建议 Activity Designer 库名称应以 Design.dll 结尾,其他人则建议它应以 VisualStudio.Design.dll 结尾。 有人说该库应该部署到 Visual Studio 的 bin 路径,也有人说它不需要。
这一切都非常混乱。
我可以使活动工具箱位图仅在使用 ToolboxBitmapAttribute 直接在activity上,并且只有当嵌入的bmp图标在activity库中时,例如:
[ToolboxBitmap(typeof(MyActivity), "Resources.Bitmaps.MyActivity.bmp"]
public class MyActivity : CodeActivity
{
}
如果我将位图移动到活动设计器库,引用活动库中的活动设计器库,并直接在活动上使用 ToolboxBitmapAttribute(使用正确的嵌入路径并使用活动设计器库中的类型) - 它确实不工作。
[ToolboxBitmap(typeof(MyActivityDesigner), "Resources.Bitmaps.MyActivity.bmp"]
public class MyActivity : CodeActivity
{
}
如果我使用 ActivityDesigner 库中的 IRegisterMetadata 接口,将 ToolboxBitmapAttribute 注册到元数据存储中的 MyActivity 类型:
AttributeTableBuilder builder = new AttributeTableBuilder();
builder.AddCustomAttributes(typeof(MyActivity), new DesignerAttribute(typeof(MyActivityDesigner)));
builder.AddCustomAttributes(typeof(MyActivity), new ToolboxBitmapAttribute(typeof(MyActivityDesigner), "Resources.Bitmaps.MyActivity.bmp"));
MetadataStore.AddAttributeTable(builder.CreateTable());
仍然没有活动的工具箱位图。
活动设计器工作正常!
看来 VS 正在加载 MyActivities.Design.dll 库,但由于某种原因忽略了 ToolboxBitmapAttribute。
我会很感激这个提示。
【问题讨论】:
-
你有没有得到这个工作?
-
不怕。我想我已经选择了工作选项。
-
我花了一些时间试图弄清楚(3 小时以上)。唯一可行的方法是您提到的属性
标签: bitmap visual-studio-2015 workflow-foundation-4 workflow-foundation toolbox