[英]C# - Getting all assemblies through reflection and their types
我想要實現的是從解決方案中獲取所有程序集的反射,然后是它們的類型,因此我可以使用.NET Core 2.0將它們放在集合Type[]
。
我能用的是
AppDomain.CurrentDomain.GetAssemblies();
- 問題是這將獲得所有引用和使用的程序集。 在我的情況下,我想獲得所有引用的程序集,但不是必需的。 所以問題是JIT編譯正在刪除未使用的項目的引用,因此在這種情況下這不起作用。 Assembly.GetExecutingAssembly().Location
來獲取DLL的Assembly.GetExecutingAssembly().Location
,然后加載所有程序集。 這里的問題是,當后者我想使用.GetTypes()
從類型System.Reflection.ReflectionTypeLoadException
拋出異常然后加載器異常我有System.IO.FileNotFoundException: Could not load file or assembly Microsoft.EntityFrameworkCore
。 問題是,它正在嘗試使用無法找到的庫,使用Assembly.LoadFrom(dll)
顯然加載DLL似乎也不會加載依賴項(庫)。 我發現的是BuildManager.GetReferencedAssemblies ,從我到目前為止讀到的,它說這可以工作並且它獲得所有引用,即使它們沒有被使用,所以我也在MsBuild庫中找到它,但不包含方法,所以我可能會引用錯誤的包。
我願意接受任何建議,如何從.NET Core 2.0項目加載所有解決方案程序集及其類型。
提前致謝!
我有一個非常相似的問題。 我不確定這是否適用於您的案例,但List<Assembly> usedAssemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies().Select((item) => Assembly.Load(item)).ToList();
可能是一個解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.