在c#4.0的循环引用情况下帮助dll引用计数

时间:2011-09-19 16:36:51

标签: c# .net vb.net c#-4.0 dll

我维护了一个我继承的大型代码库(从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的副本数量? (通常使用哪种工具)

谢谢

2 个答案:

答案 0 :(得分:1)

不,DLL-A只会加载一次。它就像所有引用mscorlib一样 - 但只加载了一个副本。

除非您正在做一些时髦的事情(使用多个AppDomain,加载带反射的程序集,并排托管多个CLR),否则您只能获得一个程序集引用的副本。

答案 1 :(得分:0)

1)否。当应用程序或库(DLL-B)使用DLL-A中的类型时,它将被加载到内存中。当其他来源稍后使用时,将使用相同的副本。

2)只有一个程序集副本将加载到您的进程的AppDomain中。在正常的应用程序中,这意味着您将使用单个副本加载每个程序集(即:dll)。

这里没有“引用计数”。