如何为C#类库静态链接库?

7

我正在使用微软提供的 DLL 创建一个 C# 类库。现在我想要将这些微软提供的库静态添加到我的 DLL 中。我应该如何做?我只是简单地将这些微软提供的 DLL 添加为引用并创建我的 DLL,这样可以吗?

如果其他计算机上没有微软提供的 DLL,那么我的 DLL 可能会失败,我需要静态添加这些库。我该怎么做呢?


你想通过这个做什么? - John Saunders
4个回答

7
在.NET中,不存在静态链接到另一个程序集的情况。有一些第三方产品,例如.NET linker可以将程序集合并为一个,但它们不受支持。
如果您拥有该库的再分发许可证,则可以将其副本与您的程序集一起发布。在Visual Studio中,您可以通过在该程序集引用的属性窗口中设置“复制本地”为“True”来实现这一点。

MMX,"they are unsupported" 是什么意思? - Mister


3
如果dll在执行时不可用,那么它将失败。但是:
- 许多Microsoft dll已经与.NET预安装(注意:“客户端配置文件”)。 - 许多Microsoft dll是可再分发的,因此您可以将它们包含在您的软件包中。
核心框架中没有提供链接器,但ILMerge可能会有所帮助。

0

不太清楚您想要实现什么,但似乎您担心您的类库能否在其他机器上运行。事实是,.Net框架是一个免费的可再分发组件,如果目标机器上没有安装,应该进行安装。如果已经在机器上安装了.Net框架,就不应该有任何问题。

在.Net中,静态链接除了将程序集引用添加到项目中之外,没有其他意义。希望这可以帮助到您。


当你在C++中静态链接一个dll时,它会将exe和dll合并成一个文件,这使得分发更容易,并且能够在有限的环境中运行。 - Jordan LaPrise

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接