我最近编写了一个小程序来确定图片中的数字,它依赖于我使用过的两个库。 (DLLs)
由于安全原因,我的目标计算机不允许安装程序,因此我需要创建一个可移植的.exe。 .NET安装在目标计算机上但由于某种原因,VS仍然不包括我在exe中使用的库,而是创建一个带有setup.exe的应用程序文件夹,一些.DEPLOY文件和一个应用程序清单。
我一般都是VS和.NET的新手,所以这个问题很容易回答,但我问,因为我在StackOverflow上找不到任何有用的东西。
答案 0 :(得分:7)
您可以简单地构建应用程序并复制bin/Debug
文件夹,但这仍然意味着您需要多个文件。
要将所有引用合并到可执行文件中,请使用ILMerge。这是some help calling ILMerge。
基本上,在构建之后,你应该做这样的事情:
ilmerge /target:winexe /out:SelfContainedProgram.exe
Program.exe ClassLibrary1.dll ClassLibrary2.dll
您只需要发送一个文件。
答案 1 :(得分:6)
执行此操作的一种方法是在发布模式下构建应用程序(您可以从下拉列表中选择Debug或Release)。然后转到C:\Projects\[ProjectName]\[ProjectName]\bin\Release
(项目文件夹的位置可能会有所不同)。您将看到一堆文件,但您真正需要的只是DLL,可执行文件和配置(如果您使用过的话)。如果您将必要的文件保存在应用程序的文件夹中,则不必进行任何设置,只需将它们全部复制到目标计算机上的文件夹中,如果您需要,则创建快捷方式。很高兴。
答案 2 :(得分:2)
您只需将所有程序集复制到所需的任何文件夹即可。只需选择" Build"从Visual Studio中将文件从bin/debug
复制到目标文件夹。
但是,您必须确保所有(相对)路径(如果存在)仍然有效,因为您无法确定程序用户将文件复制到何处。
答案 3 :(得分:0)
一种简单的方法可以是使用7zip Packager,它不需要任何安装程序。但是,VisualStudio方法可能更可靠。