![](/img/trans.png)
[英]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.