Winform 想要通过Mono在 Ubuntu 可视化版本 上跑起来
开始前要准备一下:安装mono,下面要从它那里提点文件,然后再写一个命令行模式的HelloWorld.exe(用visual studio编译的也可以)。
新建一个文件夹,比如<HelloWorld>(注:新建的时候不要建在中文名的文件夹下),然后在他下面再新建一个文件夹<bin>,从mono安装文件夹下的<bin>里copy以下文件:
Mono.exe
Mono-1.dll
Libglib-2.0-0.dll
Libgmodule-2.0-0.dll
Libgthread-2.0-0.dll
Iconv.dll
Intl.dll
我安装的mono是1.1.13版的,已经跨进了2.0时代,所以版本号都跟着2.0。如果有变,那么他提示缺失什么文件你就给他什么文件。
运行环境就这么搭好了,接下来要把framework放进去,当然不用全放,helloworld只要放mscorlib.dll就可以了:
把<MONO_PATH/lib/mono/2.0/mscorlib.dll> copy到 <HelloWorld/lib/mono/2.0/mscorlib.dll>
最后,把你的HelloWorld.exe copy到<HelloWorld>下,再放一个run.bat,写上bin/mono helloworld.exe,双击run.bat,你就能看到通过mono运行的helloworld了。
而且通过mono,你的helloworld还可以跨平台运行。
接下来你也应该知道怎样运行一个WinForm版的HelloWorld了吧。先别急,为了让你少走弯路,我现说说注意事项。你当然可以通过mono自带的编译器来编译程序,但如果你想用visual studio编译的话,你要把所有的应用都替换成mono的。比方说把System.Windows.Forms换成<MONO_PATH/lib/mono/2.0/System.Windows.Forms>等等。。。然后才能在mono下正常运行。
整理一下 遇到过的问题
LINUX系统中使用 System.Drawing.Common Gdiplus的问题
1.安装 libgdiplus sudo apt-get update sudo apt-get install -y libgdiplus cd /usr/lib && ln -s libgdiplus.so gdiplus.dll sudo apt-get update sudo apt-get install -y --no-install-recommends libgdiplus libc6-dev
2.升级到最新版本 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF sudo apt install apt-transport-https ca-certificates echo "deb https://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update sudo apt install mono-devel
这个问题是mono 在Ubuntu没有对应的 配置 Winform的文件 需要安装
参考文章:https://blog.csdn.net/shouldbe/article/details/592593
https://docs.microsoft.com/en-us/dotnet/core/install/dependencies?tabs=netcore30&pivots=os-linux