对"使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework"增加说明
http://www.cnblogs.com/basilwang/archive/2011/11/29/2267809.html
想做独立引用的估计都看过这一篇文章,但是因为软件更新,很多地方已经不适应了,所以我使用的时候遇到很多麻烦,所以记录下来,让后来人少走弯路。
Cygwin Terminal这个更新比较快,所以对于的安装也有改变,比如gcc
比如我在Cygwin的home目录的user下放一个Release要发布的程序。
先执行下面的命令
mkbundle -c -o host.c -oo bundle.o --deps Release/MonoLoad.exe Release/System.dll
再在host.c文件中移除_WIN32。增加#undef _WIN32
如下:
#ifdef _WIN32
#include <windows.h>
#endif
得到:
#ifdef _WIN32
#include <windows.h>
#endif
#undef _WIN32
再执行下面的命令
i686-pc-mingw32-gcc -o MonoLoad.exe -Wall host.c `pkg-config --cflags --libs mono-2` bundle.o
就会生成一个新的MonoLoad.exe文件
这样就大功告成了。
其实最主要的是编译器的安装,上面文章里面的“gcc -mno-cygwin -o ResultantBundle.exe -Wall host.c
`pkg-config --cflags --libs mono-2|dos2unix`
bundle.o <additional arguments>
”很容易误解,其实是一个gcc编译器的选择,而我选了i686-pc-mingw32-gcc
因缘际会的相遇,自当有非同寻常的结局
QQ交流群:110826636