C# Static Libraries

本文关键字:Libraries Static | 更新日期: 2023-09-27 18:06:36

当我使用c语言编程时,动态库和静态库之间的区别在于您在makefile中编译程序的方式。正如我们所知,dll并没有硬编码到应用程序中,而是在单独的文件中。这使得它们非常适合更新和添加功能到程序中。编译时的静态库被硬编码到应用程序中。这对于将来不需要更改的行为来说是完美的:比如安全性或基本通信。

我知道如何在c#中创建和调用。dll文件,但我需要创建和使用静态库。有没有办法做到这一点没有复制/粘贴类库到每个项目?我有很多使用这些静态库的项目,我希望在引入更改时避免不得不更改所有类库。

我在谷歌上搜索了一下,但没有找到解决方案。

谢谢…

C# Static Libraries

最接近的是ILMerge -但是你真的需要这个吗?除非您有一个可以作为单个可执行文件部署的应用程序,否则您是否有一个或十个DLL并不重要。我建议在大多数情况下,您应该将它们作为普通的类库。

请注意,ILMerge与"静态链接"并不完全相同——它仍然将所有代码打包到一个文件中,但是。net中的链接过程与本机代码的链接过程从根本上有些不同。

是的,您可以使用ILMerge之类的工具,它将多个程序集中的IL代码合并为一个程序集。像NuGenUnify这样的GUI前端使得使用ILMerge更加直接。

根据您的需求,除了ILMerge,您还可以使用"。网络模块"。这个博客提供了一些关于netmodule和程序集的区别的信息。

但是,请注意,Visual Studio不直接支持netmodules。你基本上必须手动使用c#编译器的/target:module选项(可能还有汇编链接器al.exe)来使用它们。

老实说,顺便说一句,它们是创建程序集的唯一选择,其中不同的源文件来自不同的。net语言(VB, c#等)。