15

我想将我简单的纯 .Net 2.0 控制台实用程序转换为便携式 exe,我可以将其放在 USB 记忆棒上并运行,而不必担心 CLR 和框架库是否安装在特定机器上。

Stackoverflow 已经有一些关于使用MonoMkbundle从 .Net 项目创建自包含 Windows exe 的信息,但我想要的是一个紧凑但有用的 HOWTO。

从简单的 C# Visual Studio 项目实现可移植性的最少步骤是什么?

4

1 回答 1

16

我在这里找到了一个简单的操作方法,但是,由于我自己没有测试过,我不能保证结果。像往常一样 YMMV。

引用原始文章(请同时关注原始文章中的主题):

Mkbundle:将 Mono 与您的应用程序捆绑在一起

您有没有想过为什么需要安装 .NET Framework 或 Mono 来运行您的程序?好吧,如果您可以分发您的应用程序而不用唠叨您的客户安装额外的框架,那会更方便,不是吗?所以我们在这里。让我们将基于 .NET 的应用程序与 Mono 捆绑在一起,这样您就不需要安装 Mono 或 .NET 来运行它。

准备环境

首先你需要安装最新的 Mono 和 Cygwin。安装 Mono 非常简单,因此您不会搞砸任何事情。当您开始安装 Cygwin 时,进入完整视图,然后请包含 4 个附加包。它们是:gcc、mingw、mingw-zlib 和 zlib。

现在你需要一个命令提示符。Mono 和 Cygwin 都为桌面上的命令提示符创建快捷方式,但您需要将它们组合成一个。这是为我做的一批。例如,如果您有其他 Mono 版本,您可能需要更改它。

代码:

echo Mono version 2.4 Build 6
echo Prepending 'C:\PROGRA~1\Mono-2.4\bin' to PATH
PATH=C:\PROGRA~1\Mono-2.4\bin;%PATH%

chdir C:\cygwin\bin
bash --login -i

使用 Mono 捆绑应用程序

所以我们现在在命令提示符下,运行这个 Cygwin 模式。请注意,这不再是 DOS 提示符,并且“dir”将不再起作用。要列出文件,请使用 linux 命令“ls”。您现在浏览的文件夹如下所示。Arek 是一个用户名。代码:

C:\cygwin\home\Arek

使用您的资源管理器浏览到此文件夹。现在您将 2 个文件复制到此文件夹中。第一个是您的应用程序 exe,第二个是您可以在 Mono 文件夹中找到的文件 Mono.dll (2MB)。代码:

C:\Program Files\Mono-2.4\bin

由于某种原因,整个过程不适用于长文件名,因此重命名您的应用程序 exe。它应该符合这个旧的 DOS 8.3 命名。

让我们回到命令提示符。您只需要 1 个命令即可捆绑您的应用程序,这里有一些解释。

mkbundle 是 Mono 包中的一个程序 | -o Bundled1.exe 指定如何命名 Mono 捆绑的 exe | Winform1.exe 说明将包含什么,无论如何都会包含 Mono 库 | --deps 是必要的,虽然我不确定它的作用 | -z 将大量压缩输出exe

代码:

mkbundle -o Bundled1.exe Winform1.exe --deps -z

所以现在你得到了你的 Bundled1.exe,它包含你自己的应用程序以及 Mono 本身。您不需要 Mono 或 .NET 来运行它。请注意,它将是 4MB 或更大的大小。那些捆绑的 exe 不是轻量级的。

于 2009-08-24T09:17:07.790 回答