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

我们在编写程序的时候,经常会引用各种各样的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的效果是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值