为什么C#没有C ++风格的静态库? [关闭]
-
11-09-2019 - |
题
最近我一直工作在某些共同的代码一些小的.NET应用程序。该代码已经推出抽象掉 I / O单元测试调用某些接口。
我想要的应用程序是独立的EXE没有外部的依赖。这似乎像是一个完美的使用情况静态库。试想想,它的第三方控制供应商可以受益于这种模式了。
是否有与静态库一些隐藏的脏东西,我已经错过了吗?
是否有任何理由,C#的设计者留下出来?
编辑:我知道ILMerge的,但它不提供相同的便利为静态库
。其他提示
此没有直接关系到C#,但对整个.NET伞。当然,这是可能的合并使用装配 ILMerge ,但很可惜它仍然是一个研究项目,但至少它的许可证允许用于商业活动。除此之外,运行时(CLR)不能被合并成一个单一的可执行文件,目标平台仍然需要安装.NET。
编辑:
我打字这个您编辑与ILMerge在发布信息之前。我可能是错的,但没有从避免运行时的.NET风格的动态链接额外的好处。这没有什么错把卫星组件与可执行在一起。 Microsoft不建议把他们在GAC。
使用静态库具有的缺点在于它不是由运行时提供者(MS)。跳接
例如,如果你使用静态MFC库和securify问题或其他错误在MFC静态库被发现,MS不能修补它(代码已经在您的可执行文件)。使用共享DLL允许在OS水平的容易补丁没有你关心这一点。
当然具有共享库具有小的缺点:一个依赖取并且必须安装他们在系统上
不隶属于 StackOverflow