.net库(dll)优化

时间:2009-07-25 21:18:17

标签: c# .net compiler-construction

我正在尝试在我的项目中使用PDF库ITextSharp。 ITextSharp有很多功能,我甚至没有使用它的5%。我只是想知道,为什么我应该发送完整的dll文件,当我只使用它的5%时。

有没有办法将库静态链接到我的项目并从库中删除所有未使用的方法,功能?

5 个答案:

答案 0 :(得分:3)

免责声明:我为我要提及的产品公司工作。我知道其他工具也可以做到这一点,但我只有这方面的直接经验。

无需修改任何ITextSharp源或执行您自己的自定义构建。只需bin目录中的程序集就可以实现所需的一切。

您可以使用Dotfuscator(删除选项)对整个应用程序执行静态分析,并输出仅包含应用程序中实际使用的代码的程序集。此外,您可以使用链接功能将DLL链接到您的exe,以便您只向客户发送一个文件。这可以显着减少应用程序占用空间。即使您选择不使用混淆功能,使您的应用程序更难破解和逆向工程,您也可以利用所有这些功能。

Dotfuscator可以通过多种方式添加到您的构建过程中,我们直接集成到Visual Studio(版本2002到2010)中,这样您就可以构建您的解决方案,还有一个用于在团队构建中使用的MSBuild任务服务器(如果您选择不让构建服务器构建您的解决方案),以及任何其他构建系统的命令行版本。

Dotfuscator可以处理包含Silverlight程序集的任何.NET程序集类型。

这些功能仅适用于专业版的Dotfuscator,如果您联系PreEmptive Solutions,我们可以为您提供免费的时间限制评估,以便您了解该产品如何为您服务。

如果您只想执行程序集链接,Microsoft Research的{​​{3}}实用程序也会将多个.NET程序集链接到一个程序集中。

答案 1 :(得分:2)

  1. 使用.NET dll进行静态链接没有任何好处。
  2. 不容易判断你只使用了5%的库,库里面可能会使用如此多的内部代码来做许多肉眼无法看到的小东西。
  3. 但是,iTextSharp是开源的,您可以创建条带化版本的iTextSharp以随项目一起提供。
  4. 顺便提一下iTextSharp比非.net天所需的早期dll要小。

答案 2 :(得分:1)

不修改源代码并构建自己的.dll,没有办法不发送整个东西。此外,如果您想要创建自己的修改过的.dll,请注意所涉及的任何可能的许可问题(我不知道是否有任何问题,但您肯定应该注意这一点)。最后,我想补充一下,我不知道iTextSharp .dll有多大,但是真的问自己,无论它占用多少空间实际上都很重要。

答案 3 :(得分:1)

如果要减小尺寸,可以选择混淆器或装配压缩器两种方式。

我没有使用.Net的任何混淆器只是为了Java所以我不推荐你,但他们做你假装的东西:删除未使用的方法和类。

或者您可以创建一个单独的压缩可执行文件,其中包含所有需要的程序集,这些程序集在启动时会自动解压缩,就像流行的Aspack和UPX对Windows可执行文件http://en.wikipedia.org/wiki/Executable_compression一样。我尝试了.NetZ并对结果感到满意。

答案 4 :(得分:0)

在这种情况下,最好的选择是下载代码的网站。

在许多情况下,他们使用条件编译来包含/排除某些部分。如果代码不是用条件编译编写的,那么自己做“很难”。

我个人不会重新编译源代码,除非有一个需要修复的bug,你不能等待新版本。花在改变上的时间是你的主项目(你得到的那个)的时间损失。