C# .net库(dll)优化
我试图在我的项目中使用PDF库ITextSharp。ITextSharp有这么多功能,我甚至没有使用它的5%。我只是想知道,为什么我应该提供完整的dll文件,而我只使用它的5%C# .net库(dll)优化,c#,.net,compiler-construction,C#,.net,Compiler Construction,我试图在我的项目中使用PDF库ITextSharp。ITextSharp有这么多功能,我甚至没有使用它的5%。我只是想知道,为什么我应该提供完整的dll文件,而我只使用它的5% 有没有办法将库静态链接到我的项目,并从库中删除所有未使用的方法和功能?无需修改源代码并构建自己的.dll,没有办法不发布整个内容。此外,如果您想创建自己的modified.dll,请注意可能涉及的任何许可问题(我不知道是否存在任何问题,但这肯定是您应该注意的)。最后,我想补充一句,我不知道iTextSharp.dll有多
有没有办法将库静态链接到我的项目,并从库中删除所有未使用的方法和功能?无需修改源代码并构建自己的.dll,没有办法不发布整个内容。此外,如果您想创建自己的modified.dll,请注意可能涉及的任何许可问题(我不知道是否存在任何问题,但这肯定是您应该注意的)。最后,我想补充一句,我不知道iTextSharp.dll有多大,但请你想想,它到底占用了多少空间,这是否真的很重要
在这种情况下,最好的选择是下载代码的站点 在许多情况下,它们使用条件编译来包括/排除某些片段。如果编写代码时没有考虑条件编译,那么您自己就很难做到这一点
我个人不会重新编译源代码,除非有一个bug需要修复,您不能等待新版本。花在变更上的时间是在你的主要项目(你得到报酬的项目)上损失的时间 如果要减小尺寸,有两个选项:模糊器或组件压缩器 我没有为Java使用任何.Net模糊处理程序,所以我不能向您推荐任何模糊处理程序,但它们会像您假装的那样:删除未使用的方法和类
或者,您可以创建一个包含所有所需程序集的压缩可执行文件,这些程序集在启动时会自动解压缩,就像流行的Aspack和UPX do for windows可执行文件一样。我已经试过了,并对结果感到满意。免责声明:我为我将要提到其产品的公司工作。我知道其他工具也可以做到这一点,但我只有这方面的直接经验 无需修改任何ITextSharp源代码或执行您自己的自定义构建。仅使用bin目录中的程序集就可以实现所需的所有功能 您可以使用Dotfuscator(删除选项)对整个应用程序执行静态分析,并输出仅包含应用程序中实际使用的代码的程序集。此外,您可以使用链接功能将DLL链接到exe中,以便只向客户发送一个文件。这可以大大减少应用程序占用空间。即使您选择不使用使应用程序更难破解和逆向工程的模糊功能,也可以利用所有这些功能 Dotfuscator可以通过多种方式添加到构建过程中,我们直接将其集成到Visual Studio(版本2002到2010)中,这样您就可以构建您的解决方案,还可以在团队构建服务器上使用MSBuild任务(如果您选择不让构建服务器构建您的解决方案),以及任何其他构建系统的命令行版本 Dotfuscator将处理任何.NET程序集类型,包括Silverlight程序集 这些功能仅在Dotfuscator的Pro版本中可用,如果您联系PreEmptive Solutions,我们可以为您提供免费的、有时间限制的评估,以便您了解该产品如何为您服务
如果您只想执行程序集链接,还可以使用Microsoft Research提供的实用程序将多个.NET程序集链接到单个程序集。我正在寻找一种自动化的方法。我所期望的是,编译器/工具应该自动删除函数“foo”,因为它在项目中的任何地方都没有引用。(假设未使用relection)。您是在尝试优化性能、内存还是仅优化安装的大小?删除你不打电话的代码对前两个没有帮助。+1是一个相关和全面的答案,尽管可能存在利益冲突。因为他指出了这一点,我认为不存在利益冲突。在这一点上,我不同意第1点,因为单个文件交付有很多优点。