簡體   English   中英

我可以在不知道dll文件名的情況下加載程序集,其中我只知道命名空間名稱

[英]Can I load an Assembly without knowing the dll filename, where I only know the namespace name

我想知道是否可以僅使用命名空間字符串將程序集加載到AppDomain中,例如System.Data.Odbc (沒有完全限定的程序集名稱的其余部分)

我也無法使用DLL的路徑加載程序集,我需要.NET來解決這個問題。

背景:

我有一個在另一個AppDomain中運行的C#腳本編譯器,這些腳本可以包含引用,例如: System.Data.Odbc.OdbcConnection conn ,我需要加載腳本引用的類型。

我正在解析System.Data.Odbc.OdbcConnection並加載System.Data.Odbc 我希望System.Data.Odbc.OdbcConnection的加載失敗,我的代碼解釋了這一點,但我需要知道是否可以使用字符串System.Data.Odbc加載程序集

我回顧了這個問題:

我可以在運行時加載.NET程序集並實例化只知道名稱的類型嗎?

但它對我沒有幫助,因為它假定知道dll文件名。

可以安全地假設這個庫位於GAC或應用程序的基本目錄中。

一般來說,這是不可能做到的。 DLL和命名空間之間沒有固有的關系。 多個DLL可能包含相同的命名空間和單個DLL,以包含多個不同的根命名空間。 所以這里不能保證1-1映射。

但是,您可以在應用程序中在給定命名空間和包含它的DLL集之間創建一個表。 然后,對於命名空間,嘗試按順序加載所有這些DLL。 這將使您接近您正在尋找的效果(但僅限於一組有限的可用DLL)

暫無
暫無

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

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