簡體   English   中英

.net引用的程序集名稱如何在運行時由clr解析?

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

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