我正在开发一个.NET应用程序,它使用了一些我从其他内部项目拼凑而成的项目。我正在考虑使用名为ILMerge的工具将.exe和DLLS合并到一个可执行文件中。
我可能会将可执行文件发送到公司外部,因此将所有内容合并到一个文件中会更容易传递出去。但是,我想知道将DLL与可执行文件合并是否有任何缺点?
答案 0 :(得分:5)
只要他们是你的图书馆,我认为它没有任何大问题。除非它使图像绝对和巨大,我认为如果可执行文件尽可能地依赖于它本身更好(当然,例外情况是,当你复制系统功能时......没有意义)。 p>
另一方面,如果图书馆实际上不属于你,你最好确保他们的使用条款允许这样做。您可能不被允许将它们打包到您的可执行文件中并将它们作为您自己的代码分发(即使您将产品放弃并且库是“免费的”),您可能仍然必须承认您使用它有些如何确保检查所有所包含的库的使用条款。)
答案 1 :(得分:1)
共享库的许多优点源于它们实际上是共享的。您是否有其他应用程序使用相同的DLL,这些DLL也是公开发布的,或者将来可能会发布?如果是这样,那么坚持使用共享库可以带来一些好处。通常,只有一个库的副本存储在内存中,即使多个应用程序使用它,因此它可以减少内存使用量。它还简化了升级,因为对库的更改只会影响DLL本身,就好像它静态链接到一个或多个应用程序一样,它们必须在库更改时全部升级。
我用.NET做了很多次,但我总是对GAC和它提供的库版本支持感到非常满意。您是否有令人信服的理由不使用共享库?我怀疑在大多数情况下,将应用程序减少到单个文件并不足以超过潜在优势。