您的位置:首页 > 其它

仅仅引用DLL,编译后会是什么样子?

2008-07-31 14:00 253 查看
我们在编写程序的时候,经常会引用各种各样的DLL。时间长了,有些DLL可能仅仅是引用了一下而已,其实代码里面根本就没有用到。

那么,这些没有用到的引用,会不会对我们的代码产生影响呢?我也不知道,做个实验试试看好了。

假如,我们写了两个DLL,分别为A和B。其中,A引用了B。不过呢,在A的代码里面,并没有使用到B。现在编译A,然后用ILDasm查看一下。

在ILDasm的界面下,选择“视图。元信息。显示”,从显示的内容可以明显的看出来,在A的代码里面,并没有B。其实,只要看AssemblyRef中有没有B就可以了。

如此看来,只要代码里面没有用到,那就不会对编译好的代码有影响。

可是,毕竟我们还是引用了B,总会有些影响的吧。首先查看一下VS的输出,可以清楚的看到对B的refercence。这直接导致了B这个DLL被拷贝到了A的生成目录下面。而且,如果这个时候还没有B的话,还会自动导致B被编译。

这样看来,影响也很明显了:
1,会导致A的生产目录下面出现B,虽然没有用吧。当东西多了之后,我们也不知道哪个有用,只好都保留。这就无形中增加了生成的程序的大小。
2,至少理论上,会多少降低一点生成A的时间吧。


下面继续。我在A里面,不仅仅是引用B,我还using它一下,看看会如何。

经过测试,发现IL代码没有任何变化,也就是说,如果只是using了,跟仅仅是引用B的效果是一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: