[英]How is the .net referenced assemblies names resolved by the clr at runtime?
當我的.net exe運行時,它將在rumtime加載正確的.net程序集。 我了解有一個探測過程正在發生。
我的問題是,如果我在ildasm中打開.net exe / dll,則僅對mscorlib.dll的.extern引用,而不對其他。
那么clr如何獲得進行.net引用的程序集探測所需的信息?
我有一個示例項目和圖像在這里。
所以在這種情況下,我在任何地方都看不到.net程序集引用,例如System,System.Xml.Linq,Questions等。,但顯然它們是由clr加載的,我確實在融合Logviewer中看到了它們
.net程序集所需的數據位於哪里?
我注意到一些不一致的行為行為,如何將外部匯編程序放在一些核心.net dll和其他外部.net dll的清單中。
謝謝
我知道了。 其實我有點困惑。 ILdasm顯示的內容正確。 所有靜態綁定的dll都放在dll的清單中。
我們之所以沒有看到系統引用,是因為mscorlib有一個“系統”名稱空間。 GAC中的Sysem.dll具有該名稱空間中的其余類。 因此,系統名稱空間分為兩個dll。 最常見和最基礎的是在mscorelibrary.dll中,其余的在system.dll中
實際上,Visual Studio有點誤導性,始終將System.dll顯示為參考,但並非總是如此
當我用
var bvv = new System.Uri("http://www.google.com"); ------ System.Uri class is in System.dll
Console.WriteLine(bvv.AbsolutePath);--------------------- System.Console class is in mscorlib.dll
我可以清楚地看到對System.dll的引用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.