問題陳述:實現一個允許覆蓋相關程序集的插件系統(避免文件鎖定)。在.Net中,特定程序集可能不會被卸載,只有整個AppDomain可能被卸載。如何在不使用AppDomains的情況下實現.net插件?
我發佈這個,因爲當我試圖解決問題時,每個解決方案都提到使用多個AppDomains。即使在項目開始時構建,多個AppDomain也很難正確實施。
另外,AppDomain對我無效,因爲我需要跨域傳輸Type作爲Speech Server worfklow的InvokeWorkflow活動的設置。不幸的是,跨域發送類型會導致程序集被注入本地AppDomain。
此外,這與IIS有關。 IIS具有Shadow Copy設置,允許執行的程序集在加載到內存時被覆蓋。問題是(至少在XP下,沒有在生產2003服務器上測試),當你以編程方式加載程序集時,陰影副本不起作用(因爲你正在加載DLL而不是IIS)。
我想這意味着你仍然必須重新啓動使用新的插件一旦被替換磁盤上的應用程序?我曾經有過這樣的印象:即使你重新加載了組件,一旦類型被加載,它也不能被改變。 – 2009-01-20 01:49:04