AppDomain:遞歸程式集載入與相依性管理
將組件及其相依性載入到新的 AppDomain 可能很棘手。 對於初學者來說,常見的 FileNotFoundException
通常是由於缺少依賴項而產生的。
理解問題
要記住的一個關鍵點是,當您將組件載入到 AppDomain 時,它所引用的組件不會自動載入。 這需要遞歸載入以確保所有依賴項都可用。 如果不這樣做會導致錯誤,例如:
「無法載入檔案或組件「MyDll,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null」或其依賴項之一。系統找不到指定的檔案。」
這個錯誤清楚地表示需要遞歸依賴載入。
手動解決依賴關係
一種常見的嘗試涉及迭代根程序集的引用並單獨載入它們。但是,這通常會導致引用的程序集本身的依賴項出現重複的 FileNotFoundException
錯誤。
關鍵步驟:CreateInstanceAndUnwrap
解決方案在於在目標 AppDomain 中執行代理物件之前使用 CreateInstanceAndUnwrap
。這可確保代理程式在其指定的 AppDomain 內正確運作。
LoadFile
與 LoadFrom
使用 LoadFrom
可能會導致問題,因為它會搜尋 GAC 或應用程式的 bin 資料夾。 為了避免這種情況,請使用LoadFile
。 請記住,您仍然負責自己遞歸載入相依性。
總結
成功地將組件及其相依性載入到 AppDomain 中需要仔細的遞歸相依性載入。 使用 CreateInstanceAndUnwrap
並選擇 LoadFile
而不是 LoadFrom
將幫助您有效管理引用的組件。
以上是如何將組件及其相依性遞歸載入到 AppDomain 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!