当我的.net exe运行时,它会在朗姆酒时加载正确的.net程序集。我知道有一个探索过程发生。
我的问题是,如果我在ildasm中打开.net exe / dll,我只有.extern对mscorlib.dll的引用,而不是其他。
那么clr如何获得探测.net引用的程序集所需的信息呢?
我有一个示例项目和图像。
所以在这种情况下,我没有看到.net程序集引用任何像System,System.Xml.Linq,Questions等...,但显然它们是由clr加载的,我确实在我的Fusion logviewer中看到它们
.net程序集所需的数据在哪里?
我注意到一些不一致的行为行为如何将extern程序集放入某些核心.net dll和其他外部.net dll的清单。
谢谢
答案 0 :(得分:0)
我明白了。其实我有点困惑。 ILdasm显示的是正确的。所有静态绑定的dll都放在dll的清单中。
为什么我们没有看到系统引用是因为mscorlib有一个'System'命名空间; GAC中的Sysem.dll具有该命名空间中的其余类。 所以System命名空间分为两个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的引用