使用多个项目的帮助程序/实用程序库减少膨胀的最佳实践

时间:2011-02-27 16:22:17

标签: .net visual-studio compiler-construction ilmerge satellite-assembly

好的,我有一个我开发的应用程序,我们称之为项目A.在Microsoft .NET Framework中找不到的功能我放入共享库,让我们称之为MyLib。

现在项目B,C,D,E也使用MyLib(许多项目)。我的“MyLib”现在已经慢慢加入了4年或5年。

我现在遇到的问题是MyLib是巨大的。嗯,5MB,但我称之为巨大。

问题我应该是,我可以,我如何使用MyLib 编译我的项目,但从MyLib中删除未使用的函数,类等?我的Hello World应用程序使用来自MyLib的1个小型静态函数会产生6MB的HelloWorld.exe(在ilmerge之后)。

FOSS>付费软件

4 个答案:

答案 0 :(得分:3)

您要搜索的是Mono Linker,而source code is on GitHub。独立工具并不经常使用,但因为它是iPhone编译器的一步,我猜这些库是坚如磐石的。

  

因为你并不总是使用每一个   您正在使用的库的功能   为你的程序。通过使用链接器,   你可以减少你的大小   必须分发给您的用户。

答案 1 :(得分:0)

看起来您需要将库函数分组为更小的部分。而不是拿你繁琐的瑞士军刀。把它分解成更小的部分。

“最佳实践”是用单元测试覆盖你的mylib,然后慢慢重构这些类。

“最佳实践”会将这些分开。看看.net框架。没有一个巨大的dot.dll

答案 2 :(得分:0)

从.Net框架本身获取一些线索。如果MyLib有很多Text辅助对象和函数,并且很多人说Web辅助对象和函数将它们分成两个独立的项目和命名空间。

当然,我只推荐这个,因为它似乎打扰了你。就个人而言,我有一些比一些略微超大的DLL更大的宠物小便。

既然你说它使VS运行速度变慢,我认为你的意思是你要包含项目MyLib而不仅仅是DLL。我会立即停止这样做。运行MyLib的构建,只需包含对DLL的引用。

答案 3 :(得分:0)

AFAIK,只有痛苦的方式:将你的图书馆分成功能部分。这将意味着浏览使用MyLib的各种项目并添加适当的新引用,但我没有看到其他方法。这也是棘手的部分:决定那些功能单元的界限。如果你不小心,你最终可能会(即)引用6个不同的组件,而以前只有一个组件,在此过程中会有恶化的事情。

在您沿着这条路走下去之前,请仔细评估非常您的项目使用和不使用的内容。