2011-03-24 9 views
2

在我當前的項目中,我使用WCF服務將dll文件發送給客戶端。 dll文件包含客戶端用於可視化數據的UserControl。 但是,有時會由服務引入新的UserControls,而客戶端不知道這一點。當發生這種情況時,我將新的dll文件發送給客戶端,以便他們擁有最新版本的UserControls。但是,當我想在客戶端HD上(使用FileStream)寫這個新的dll文件時,我得到一個異常,說該文件被另一個進程使用(當然,客戶端總是有一個程序集版本的UserControls在他們的HD上,所以這必須被覆蓋)。使用MEF和WCF時重寫dll文件

有什麼辦法覆蓋這個文件沒有得到錯誤?我正在使用MEF讀取客戶端項目中的程序集文件。要將程序集文件發送到客戶端,我只需將文件名作爲字符串發送,並將文件的內容發送到字節數組中。

回答

2

這通常與Shadow Copying完成,但我無法找到任何明確的是否它與MEF一起使用。

如果您的新控件可以在關閉並重新打開應用程序時加載,那麼您可以在與MEF合成之前複製所有插件。

這是一個blog post與某人基本上嘗試MEF + Shodow複製和一個特別相關的評論。

這裏的根本問題是, .NET不支持動態組裝 卸載。你可以重新加載 組裝,但你將永遠無法 恢復由老 一個

+0

感謝您使用的記憶!當引入新控件時,我會向客戶端發送重新啓動命令。當客戶端啓動時,我將在使用MEF加載控件之前覆蓋程序集。這應該工作。 – BramW 2011-04-08 14:05:31