C# 是否可以删除.NET中未使用的代码/程序集?

C# 是否可以删除.NET中未使用的代码/程序集?,c#,.net,ilmerge,C#,.net,Ilmerge,我的应用程序中有一个控制库,它对于我正在开发的应用程序类型来说有点大。这个库超过2Mb,我几乎不使用它的功能,我会说我使用了它所有功能的5%到10% 是否有任何方法可以从库中删除我的应用程序从未使用过的代码 附言:这个库不是我开发的,也不是开源的(不过你可以买代码) 编辑: 我发布这篇文章是因为我认为这可以通过ILMerge实现,这是过去有人对我说的。。。我尝试使用ILMerge,但没有成功,我不确定我是否正确使用了它…2Mb不是很大 如果你觉得它太多了,因为它是你的代码,你应该考虑将它重构成单

我的应用程序中有一个控制库,它对于我正在开发的应用程序类型来说有点大。这个库超过2Mb,我几乎不使用它的功能,我会说我使用了它所有功能的5%到10%

是否有任何方法可以从库中删除我的应用程序从未使用过的代码

附言:这个库不是我开发的,也不是开源的(不过你可以买代码)

编辑: 我发布这篇文章是因为我认为这可以通过ILMerge实现,这是过去有人对我说的。。。我尝试使用ILMerge,但没有成功,我不确定我是否正确使用了它…

2Mb不是很大


如果你觉得它太多了,因为它是你的代码,你应该考虑将它重构成单独的程序集,仍然使用相同的命名空间。这样,您的代码就可以只引用它需要的程序集。

如果它是开源的,您可以查看代码,有选择地取出您想要的并构建一个单独的程序集


如果它不是开源的,您可以在程序集上使用,写出您想要保留的代码(及其所有依赖项),然后在您自己的程序集中重新构建它。我不确定这是否合法。这可能取决于您的库的许可证

您可以这样做,但需要一些编程。看看mono cecil项目,您可以打开程序集,删除不需要的类型并保存它。编程涉及到确定哪些类型不被使用(类型A使用类型B,因此如果使用类型A,则应保留类型B).

我的老板使用了一种模糊处理产品,通过将使用的代码引入组合程序集中来实现这一点。我记不起它叫什么了,可能是DotNet反应器(我们在选择一种之前使用了几种不同的产品)。

有一种叫做DotNet反应器的产品可以做到这一点。它有点贵,至少对我来说是这样。

作为一个警告,请确保您所做的事情是允许的,根据制作该库的供应商公司的EULA。

我不记得它叫什么,但在VS2008中,有一个精简的模糊器可以工作一点,我预计,如果你购买了许可版本,它将大大减少代码的大小。这类事情可能需要花钱才能实现这样的功能,不是吗?这对我来说是一个小小的不便,我不打算为此付费……当应用程序应该只有几个kbs时,这太多了,2mb的额外代码太多了。而且库代码不是我的。考虑到2Mb是虚拟内存,2Mb在任何拥有至少256 Mb内存的现代计算机上都不算大。如果你不碰它,它就不会占用空间。它不是开源的(见第一篇后编辑),即使它是,这将是太多的工作…不幸的是,ILMerge做的正好相反(让程序集有更多代码……)请考虑