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