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

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

现在我想静态地将那些Microsoft提供的库添加到My Dll。我该怎么做呢。 我简单地添加了对Microsoft提供的Dlls和创建My Dll的引用? 这样好吗?

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

我怎样才能做到这一点??

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

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

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

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

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

  • 许多Microsoft dll都预装了.NET(警告:“客户端配置文件”)
  • 许多Microsoft dll都是可再发行的; 所以你可以把它们包在你的包中

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

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

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