将.NET外部dll组合到单个可执行文件中

时间:2014-08-30 02:05:26

标签: c# json winforms visual-studio ilmerge

这是一个简单的问题。如果Newtonsoft.Json.dll不在程序文件夹中,我就无法运行我的程序。为什么这个?我尝试添加引用,将文件添加到项目根目录,添加到资源文件夹,但没有任何效果。如何在程序文件夹中运行没有Newtonsoft.Json.dll的程序?我正在Windows窗体应用程序中开发。

更新

问题解决了,感谢花费向我介绍了ILMerge,这是一个非常好的NuGet包,它可以将第三方dll组合到一个可执行的二进制文件中。对于谁想要创建一个独立的应用程序,只需使用ILMerge。快速,简单且非常有用。见啊!

3 个答案:

答案 0 :(得分:4)

通常,如果您的程序使用DL​​L,那么您在app文件夹(或用户路径或GAC)中需要该DLL。

分发多个文件的传统方法是使用安装程序。您可以使用WiXVS Installer Projects扩展名编写一个。现在,所有输出文件都与安装程序附带的所有其他优点一起安装。我非常喜欢这种方法。

然而,还有其他选择:

  • Download the source并将源代码复制到主项目中,然后将其编译到主程序集中(确保检查许可证是否允许这样做)。

  • 使用ILMerge将所有程序集合并为一个二进制文件。

答案 1 :(得分:0)

如果您不想在程序中引用dll,可以在客户端计算机上将其安装到GAC,但我不明白您想要的上下文

答案 2 :(得分:0)

如果您只需要一些JSON序列化。您可以使用随.Net安装的JavascriptSerializer类来切换您的功能吗?

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer(v=vs.90).aspx