[英]windows Workflow foundation - passing custom variable between different activity in a workflow
[英]Creating custom activity design without reference to Design DLL in Windows Workflow Foundation
我正在将Windows Workflow Foundation与自定义活动一起使用 ,并且我想在我的工作流中为这些活动创建自定义设计 。
我可以进行设计项目,也可以进行设计师xaml。 如果我直接在Workflow项目中引用Design项目 , 那么我也可以在工作流中看到针对他们的自定义设计。
这是我不希望做的事情,因为不应将Designer DLL部署到生产环境中。 我只想在Visual Studio工作流编辑器中进行自定义设计。
通过添加以下内容,我可以使工作正常进行:
[Designer("namespace,dll")]
public class CustomActivity : NativeActivity<string>
然后将dll复制到visual studio路径。 这又是我不希望做的事情,因为每个开发人员都应该这样做并进行构建,以便将dll复制到某个固定的Visual Studio路径中不是很好。
我使用了这两个示例,但是似乎这两个示例都直接引用了DLL:
我认为Visual Studio / Workflow Foundation会以某种方式支持这种功能。
您有任何解决方法的想法吗? 谢谢!
Designer
属性(使用“魔术”字符串)不是很可靠。 如果更改类名或名称空间,则不会出现编译错误。 使用IRegisterMetadata
实现还有另一种(更好的恕我直言)方法:
System.Activities.Presentation.Metadata.IRegisterMetadata
继承。 该接口仅定义一种要实现的方法。 这是一个实现示例:
public void Register()
{
AttributeTableBuilder builder = new AttributeTableBuilder();
builder.AddCustomAttributes(
typeof(MyActivity),
new DesignerAttribute(typeof(MyActivityDesigner)));
MetadataStore.AddAttributeTable(builder.CreateTable());
}
接下来,您需要在Visual Studio中使用自定义设计器。 Visual Studio具有严格的规则来自动加载设计器程序集。 你需要:
重要编辑:
我现在看到您的链接已经显示了此方法,但是您说它直接引用了DLL。 是的,DESIGN DLL引用了ACTIVITY DLL。 但是您却提出了相反的要求:活动dll不应引用设计dll。 使用IRegisterMetadata方法,您的DESIGN dll可以引用ACTIVITY dll,这不是问题:您可以从已发布的程序包中删除设计dll,活动dll可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.