簡體   English   中英

為什么在使用MEF時成功加載了程序集引用?

[英]Why does the assembly reference gets loaded successfully when using MEF?

與MEF用戶的常見問題相反,我沒有試圖弄清楚為什么用MEF加載的程序集的依存關系沒有得到解決。 我正在解決相反的問題-試圖找出為什么加載依賴項。

情況是,我有一個ASP.NET應用程序,該應用程序使用MEF動態加載駐留在應用程序目錄之外的擴展程序集。 我用MEF探查的不同目錄中可能有同一擴展程序集的多個版本,每個版本都有其自己的依賴關系集,這些依賴關系可能是單個程序集的多個版本(即擴展名A.dll,1.0.0.0具有依賴關系)。 D.dll 1.0.0.0和擴展名B.dll 2.0.0.0具有依賴項D.dll 2.0.0.0 )。

從某種意義上說,所有擴展及其所有依賴項均已正確加載。 而且我不知道為什么。 我的web.config文件中沒有特殊設置。 它在正式的程序集解析文件中哪里說明應該起作用? 它並沒有說要查看請求程序集所在的目錄。

我希望Fusion Log Viewer會告訴我運行時如何定位依賴項,但是即使它顯示了給定依賴項的所有不同版本的綁定請求,當我單擊它以查看完整日志時,我也只會看到失敗綁定(是的, 我將其設置為記錄所有綁定請求 ,而不僅僅是失敗的請求 )。

誰能指出我官方文件中解釋這種情況的原因?

MEF的主要分辨率由所使用的ComposablePartCatalog確定。 例如,如果使用DirectoryCatalog ,則會探測並找到指定目錄內的所有程序集。

通過查看CompositionContainer ,您應該能夠找到適當的目錄,而目錄又應提供有關零件正確組成原因的一些詳細信息。

也有可能由於“其他位置探查”中定義的規則而發現了您的依賴項:

如果程序集使用LoadFrom方法引用另一個程序集,則調用程序集的位置被視為有關在何處找到被引用程序集的提示。 如果找到匹配項,則加載該程序集。


如果使用DirectoryCatalogDirectoryCatalog中查找程序集,則它將在內部加載該文件夾中的每個程序集。 構造DirectoryCatalog時,這還將導致所有依賴項也被加載到進程中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM