繁体   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