Vil*_*nen 14 .net c# mono portability mkbundle
我想将我简单的纯.Net 2.0控制台实用程序转换为便携式exe文件,我可以将其放在USB记忆棒上运行,而不必担心CLR和框架库是否安装在特定的机器上.
Stackoverflow已经有一些关于使用Mono和Mkbundle从.Net-projects创建自包含Windows exes的信息,但我想要的是一个紧凑但有用的HOWTO.
从简单的C#Visual Studio项目实现可移植性的最小步骤是什么?
par*_*cle 16
我在这里找到了一个简单的操作方法,但是,由于我自己没有测试过,我无法保证结果.像往常一样YMMV.
从原始文章引用(请关注原始文章中的主题):
Mkbundle:将Mono与您的应用程序捆绑在一起
你有没有想过为什么你需要安装.NET Framework或Mono来运行你的程序?好吧,如果您可以分发您的应用程序而不会唠叨客户端来安装其他框架,那会更方便,不是吗?我们在这里.让我们将基于.NET的应用程序与Mono捆绑在一起,因此您不需要安装Mono或.NET来运行它.
准备一个环境
首先,您需要安装最新的Mono和Cygwin.安装Mono非常简单,所以你不能搞砸任何东西.当您开始安装Cygwin时,请进入完整视图,然后请包含4个额外的包.它们是:gcc,mingw,mingw-zlib和zlib.
现在您需要一个命令提示符.Mono和Cygwin都会在桌面上创建命令提示的快捷方式,但您需要将它们合并为一个.这是一个为我做的批处理.如果您有其他Mono版本,则可能需要更改它.
码:
Run Code Online (Sandbox Code Playgroud)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是用户名.码:
Run Code Online (Sandbox Code Playgroud)C:\cygwin\home\Arek使用资源管理器浏览到此文件夹.现在您将2个文件复制到此文件夹中.第一个是您的应用程序exe,第二个是您可以在Mono文件夹中找到的文件Mono.dll(2MB).码:
Run Code Online (Sandbox Code Playgroud)C:\Program Files\Mono-2.4\bin由于某种原因,整个过程不适用于长文件名,因此重命名您的应用程序exe.它应该符合这个旧的DOS 8.3命名.
让我们回到命令提示符.您只需要1个命令来捆绑您的应用程序,这里有一些解释.
mkbundle是Mono包中的一个程序 -o Bundled1.exe指定如何将Mono-bundled exe命名为 Winform1.exe说明将包含的内容,无论如何都将包含Mono库 - 虽然我不确定它是做什么的,但是必须使用 -z将压缩输出exe很多
码:
Run Code Online (Sandbox Code Playgroud)mkbundle -o Bundled1.exe Winform1.exe --deps -z所以现在你有了Bundled1.exe,它包含你自己的应用程序和Mono本身.您不应该使用Mono或.NET来运行它.请注意,它的大小将为4MB或更大.捆绑的exes不是轻量级的.