2012-02-06 17 views
0

我做了一個Activity Library項目。接下來,我在項目中創建了一些工作流程,主要是作爲輸入和輸出參數的演示。我將它們看作工具箱中的可重用組件(活動),並在一些FlowChart活動中使用了幾個。這以編譯的方式正常工作。但是,當從XAML加載和執行工作流程時,從我的項目中引用活動時會失敗。參考項目內活動加載並執行XAML

需要做什麼才能重新使用從XAML加載和執行工作流時從同一項目中的活動?

回答

2

我懷疑你的問題在於,當你創建活動時,xmlns:local propery不包含程序集名稱,只有名稱空間名稱。這意味着,當您加載XAML文件時,運行時會假定在當前正在執行的程序集中找到名稱空間。當您從應用程序引用活動庫時,這是不正確的假設。

你有兩個選擇來解決這個問題。

1)您可以手動將「; assembly = MyActivityLibrary」附加到xmlns:local屬性(在您的XAML文件的頂部)。這很簡單,但如果您在Visual Studio中修改了XAML,那麼您必須記住每次都要重做您的更改。

2)當您調用XamlServices.Load時,您可以傳遞類型爲XamlXmlReaderSettings的第二個參數,並指定LocalAssembly屬性爲您的活動庫程序集。這將是更穩定的方法。然後當您不需要手動編輯XAML文件時

+0

謝謝。我想我現在明白了。你是否解釋了爲了引用自定義活動,它們必須包含在程序集中,即使在運行中加載和編譯XAML?我們希望避免部署除了開箱即用的程序集之外的任何東西。這聽起來像我們需要將我們的自定義活動放在一個彙編中,並且在加載和編譯XAML時需要在當前進程中提供。這聽起來正確嗎? – 2012-02-06 15:04:03

+0

在我明確回答之前,請讓我確定我瞭解您的情況。您有一些自定義活動,您可以將其存儲在未編譯的XAML中。您還有一些工作流需要存儲在未編譯的XAML中。您希望能夠在運行時加載/編譯自定義工作流程(反過來引用自定義活動),而無需使用標準WF之外的任何程序集。這是否正確? – EverPresent 2012-02-06 18:44:31

+0

這是100%賓果 – 2012-02-06 20:56:04