你有没有想过为什么你需要。安装.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命名。
让我们回到命令提示符。您只需要一个命令来捆绑您的应用程序,这里有一些解释。
mkbundles是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或更大。那些捆绑在一起的前任并不轻便。