我维护了一个我继承的大型代码库(从vb6移植到C#.net 1.1,然后移植到.net 2.0 / c#等等)。我有这个场景
我的主项目引用了两个DLL - DLL-A和DLL-B
DLL-B引用DLL-A。 dll和我的主项目都在3个不同的命名空间中。
1)DLL-A的2个副本是否已加载到内存中? (dll引用计数)
2)如何找出内存中加载.net dll的副本数量? (通常使用哪种工具)
谢谢
答案 0 :(得分:1)
不,DLL-A只会加载一次。它就像所有引用mscorlib一样 - 但只加载了一个副本。
除非您正在做一些时髦的事情(使用多个AppDomain,加载带反射的程序集,并排托管多个CLR),否则您只能获得一个程序集引用的副本。
答案 1 :(得分:0)
1)否。当应用程序或库(DLL-B)使用DLL-A中的类型时,它将被加载到内存中。当其他来源稍后使用时,将使用相同的副本。
2)只有一个程序集副本将加载到您的进程的AppDomain中。在正常的应用程序中,这意味着您将使用单个副本加载每个程序集(即:dll)。
这里没有“引用计数”。