在VS中,我只测试了代码并对其进行了调试,但实际上从未为最终的程序或发布做过任何准备。我下载的一些程序有dll需要在他们所在的文件夹中,而且我的程序只有一个.exe。有没有办法将所有文件编译成一个应用程序而没有外部dll?这是不好的编程习惯吗?如何将我的VS程序编译成一个可执行文件?
我知道这是一个非常明显的问题,这就是我无法找到答案的原因,因为在它上面编写任何类型的教程都是显而易见的。
答案 0 :(得分:3)
使用C#或VB.NET等托管语言,ILMerge是一个可以使用的实用程序。
ILMerge是一个用于将多个.NET程序集合并到单个.NET程序集中的实用程序。它适用于可执行文件和DLL,并带有几个控制输出处理和格式的选项。
答案 1 :(得分:1)
如果问题只是让VisualStudio构建可执行程序,那么每次在其中运行它时都会执行它。如果使用所有默认设置,请打开项目文件夹并查找/ bin目录。在它下面,有一个/ debug和/ release目录。如果您在调试模式下构建程序,请查看/ debug目录,如果您在发布模式下构建它,请查看发布目录。 VS会将您的程序所需的所有内容放在该目录中。您可以将所有这些文件复制到另一台安装了.Net运行时的计算机上,然后运行它。
如果问题更多的是将多个dll组合到一个exe中,实际上,CodePlex上有一个教程:
如您所知,不再需要传统的目标代码链接 在.NET中。 .NET程序通常由多个部分组成。一个 典型的.NET应用程序由可执行程序集组成 程序目录中的程序集,以及程序中的一些程序集 全局程序集缓存。程序运行时,运行时结合 所有这些部分都是一个程序。在编译时链接不再 必要的。
但有时候,将所有部分组合起来仍然很有用 程序需要执行一个程序集。例如,你 可能希望通过组合来简化应用程序的部署 将程序,所有必需的库和所有资源合并为一个 .exe文件。
http://www.codeproject.com/KB/dotnet/mergingassemblies.aspx
最后,如果问题是关于构建广泛分发的安装程序,Jan Willem B有一个WIX样本:Using WIX to create an installer: quickstart tutorial
答案 2 :(得分:0)
是的,您可以使用ILMerge嵌入托管的.Net DLL!示例here。