我的应用程序中有一个控件库,对于我正在开发的应用程序类型来说有点大。该库超过 2Mb,我几乎不使用它的功能,我会说我使用了它所有功能的 5% 到 10%。
无论如何要从库中删除我的应用程序从不使用的代码?
PS:这个库不是我开发的,也不是开源的(你可以购买代码)。
编辑:我发布这个是因为我虽然可以使用 ILMerge 来实现,但这是过去有人对我说的......我尝试使用 ILMerge 但没有用,我不确定我是否正确使用它。 ..
需要注意的是,请确保根据制作库的供应商公司的 EULA,您所做的事情是允许的。
有一个名为SmartAssembly的产品可以做到这一点。它有点贵,至少对我来说。
我的老板使用了一个混淆产品来做到这一点,将使用的代码放入一个组合程序集中。不过不记得它叫什么了,可能是 DotNet Reactor(我们在确定一个之前使用了几种不同的产品)。
2Mb 不算大。
如果你觉得它太多了,并且因为它是你的代码,你应该考虑将它重构为单独的程序集,仍然使用相同的命名空间。这样,您的代码只能引用它需要的程序集。
如果它是开源的,您可以查看代码并有选择地取出您想要的内容并构建一个单独的程序集。
如果它不是开源的,您可以在程序集中使用Reflector并拧出您想要保留的代码(及其所有依赖项),然后在您自己的程序集中重新构建它。我不确定这有多合法。这可能取决于您图书馆的许可证。
你可以这样做,但需要一些编程。看看 mono cecil 项目,你可以打开程序集,删除不需要的类型并保存它。编程涉及确定不使用哪些类型(A 类型正在使用 B 类型,因此如果您使用 A 类型,则应保留 B 类型)...