簡體   English   中英

如何在不編譯 .NET Core 的情況下加載程序集並調用它們的方法

[英]How to load assemblies and invoke their methods without compiling in .NET Core

我有一個 .NET Core 項目,它需要接收一個字符串,該字符串確定要使用的身份驗證邏輯,然后使用它。

身份驗證邏輯需要是位於目錄中並實現接口的 DLL。 我們應該可以選擇向目錄添加更多實現接口的 DLL,而無需編譯項目。

.NET Framework 有一個完美的解決方案 - MEF(托管擴展框架)。 不幸的是,.NET Core 僅部分支持 MEF(不支持DirectoryCatalog ,它允許掃描目錄和加載程序集)

在 .NET Core 中是否有類似/更好的方法來實現這一點?

由於在 .NET Framework 中我通過“程序集”選項卡添加了引用,所以當我在 .NET Core 中嘗試相同時,它不存在。 我還閱讀了一篇虛假/過時的文章,聲稱 .NET Core 不支持它 - 我的印象是這是不可能的。

我想我最好找一個能提供替代方案的 NuGet 包,然后發現你只需要為System.DirectoryCatalog.Composition安裝 NuGet 就可以了。

這是這篇文章:

https://www.tutorialspoint.com/dotnet_core/dotnet_core_managed_extensibility_framework.htm#:~:text=MEF%20is%20a%20library%20for,and%20is%20available%20wherever%20the%20

僅移植 System.Composition,System.ComponentModel.Composition 尚不可用。 這意味着,我們沒有可以從目錄中的程序集加載類型的目錄。

如果有人對此感到困惑,還有另一種方法可以將插件功能添加到 .NET 5+ 應用程序。

這意味着使用AssemblyLoadContext ,它比用於 .NET Core/.NET5+ 的 MEF 有更好的文檔記錄

暫無
暫無

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

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