代码之家  ›  专栏  ›  技术社区  ›  Ville Koskinen

如何转换一个简单。网络控制台使用Mono和mkbundles将a投影到可移植的exe中?

  •  15
  • Ville Koskinen  · 技术社区  · 16 年前

    some information Mono Mkbundle 用于从创建自包含的Windows exe。Net项目,但我想要的是一个简洁但有用的HOWTO。

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

    1 回复  |  直到 9 年前
        1
  •  16
  •   paracycle    16 年前

    我找到了一个简单的方法 here 然而,由于我自己没有测试过,我不能保证结果。像往常一样YMMV。

    引用原始文章(但也请遵循原始文章上的线索):

    你有没有想过为什么你需要。安装.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或更大。那些捆绑在一起的前任并不轻便。

    推荐文章