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

时间:2009-07-09 07:16:52

标签: c# c#-2.0

我正在使用微软提供的Dll在c#中创建一个类LLibrary。

现在我想静态地将那些Microsoft提供的库添加到My Dll。我可以这样做吗? 我只是简单地添加了对Microsoft提供的Dlls和创建My Dll的引用?是不是很好?

如果微软提供的dll在其他机器上不可用,那么我的Dll可能会失败我需要静态添加库吗?

我该怎么做?

4 个答案:

答案 0 :(得分:6)

在.NET中没有静态链接到另一个程序集的东西。有些第三方产品(例如.NET linker)将程序集合并为一个,但它们不受支持。

如果您拥有该库的再分发许可证,则可以随程序集一起提供副本。在Visual Studio中,您可以通过在该程序集引用的属性窗口中将“Copy Local”设置为“True”来实现此目的。

答案 1 :(得分:4)

请参阅此处的讨论并阅读评论 - 杰夫确实提供了一种方法。

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

答案 2 :(得分:3)

如果dll在执行时不可用;是的,它会失败。但是:

  • 许多Microsoft dll预先安装了.NET(警告:“客户端配置文件”)
  • 许多Microsoft dll都是可再发行的;因此,您可以将它们包含在您的包中

虽然ILMerge可能有用,但核心框架中没有提供链接器。

答案 3 :(得分:0)

它不是很清楚你想要实现什么,但似乎你担心你的类lib可以在其他机器上工作。问题是.Net框架是一个免费的可再发行组件,如果目标机器上不存在则应该安装。由于.Net框架已安装在计算机上,因此应该没有问题。

静态链接在.Net中没有意义,除了向项目添加程序集引用之外。希望它有所帮助