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

我的应用程序中有一个控件库,对于我正在开发的应用程序类型来说有点大。 该库超过2Mb,我几乎没有使用它的function,我会说我使用它的function的5%到10%。

反正有没有删除我的应用程序从未使用过的库代码?

PS:这个库不是由我开发的,它不是开源的(你可以买代码)。

编辑:我发布这个因为我虽然这可以使用ILMerge实现,这是有人在过去对我说的…我试图使用ILMerge但是没有用,我不确定我是否正确使用它。 ..

我的老板使用了一个混淆产品来完成这项工作,将所使用的代码放入组合assembly中。 不记得它叫什么,可能是DotNet Reactor(我们在使用之前使用过几种不同的产品)。

有一个名为SmartAssembly的产品就是这样做的。 它有点贵,至少对我而言。

同样需要注意的是,根据制造图书馆的供应商公司的EULA,确保您正在做的事情是允许的。

2Mb并不大。

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

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

如果它不是开源的,你可以在程序集上使用Reflector并拧掉你想要保留的代码(及其所有依赖项),然后在你自己的程序集中重建它。 我不确定那是多么合法。 它可能取决于您的图书馆的许可证。

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