簡體   English   中英

C# - 通過反射及其類型獲取所有裝配

[英]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.

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