创建 "portable" .exe(没有安装程序)

Creating a "portable" .exe (without installer)

我最近编写了一个小程序来确定图片中的数字,它依赖于我使用过的两个库。 (DLL)

由于安全原因不允许我的目标计算机安装程序,因此我需要创建一个可移植的.exe。 .NET 安装在目标计算机上,但出于某种原因,VS 仍然不包含我在 exe 中使用的库,而是创建一个包含 setup.exe、一些 .DEPLOY 文件和应用程序清单的应用程序文件夹。

一般来说,我是 VS 和 .NET 的新手,所以这个问题很容易回答,但我问这个问题是因为我在 Whosebug 和 google.[=11= 上都没有发现有用的东西]

您可以简单地构建应用程序并复制您的 bin/Debug 文件夹,但这仍然意味着您需要多个文件。

为了将所有引用合并到可执行文件中,请使用 ILMerge. Here is some help calling ILMerge

基本上,在构建之后,你应该做这样的事情:

ilmerge /target:winexe /out:SelfContainedProgram.exe 
    Program.exe ClassLibrary1.dll ClassLibrary2.dll

您只需要发送一个文件。

您可以将所有程序集复制到您想要的任何文件夹中。只需从 Visual Studio 中选择 "Build" 并将文件从 bin/debug 复制到目标文件夹。

但是您必须确保所有(相对)路径(如果存在)仍然有效,因为您无法确定程序的用户将文件复制到何处。

一种方法是在发布模式下构建您的应用程序(您可以从下拉列表中选择调试或发布)。然后转到 C:\Projects\[ProjectName]\[ProjectName]\bin\Release(您的项目文件夹的位置可能会有所不同)。您会看到一堆文件,但您真正需要的只是 DLL、可执行文件和配置(如果您使用的话)。如果您将必要的文件保存在应用程序的文件夹中,则无需进行任何设置,只需将它们全部复制到目标计算机上的一个文件夹中,如果需要,创建一个快捷方式就可以了。

一种简单的方法是使用 7zip Packager,它不需要任何安装程序。但是,VisualStudio 方法可能更可靠。

我最近遇到了同样的问题。不再支持上面的 ILMerge 建议。我发现 Fody.Costura 作为现代替代品。