C# 使用Winforms应用程序在Windows上运行mono会立即退出

C# 使用Winforms应用程序在Windows上运行mono会立即退出,c#,winforms,mono,C#,Winforms,Mono,我已经安装了mono 3.2.3。当我尝试运行Winforms应用程序时(即使是创建新项目时与默认模板一样简单的应用程序),mono会立即退出,退出代码为1,不做任何操作,也没有输出。控制台应用程序工作正常 这是因为尝试在Cygwin中运行它: 通过将项目的输出类型更改为Console应用程序,我在控制台中收到了错误消息 未处理的异常: System.TypeInitializationException:System.Windows.Forms.WindowsFormsSynchronizat

我已经安装了mono 3.2.3。当我尝试运行Winforms应用程序时(即使是创建新项目时与默认模板一样简单的应用程序),mono会立即退出,退出代码为1,不做任何操作,也没有输出。控制台应用程序工作正常

这是因为尝试在Cygwin中运行它:


通过将项目的输出类型更改为Console应用程序,我在控制台中收到了错误消息

未处理的异常: System.TypeInitializationException:System.Windows.Forms.WindowsFormsSynchronizationContext的类型初始值设定项引发异常-->System.TypeInitializationException:System.Windows.Forms.ThemeEngine的类型初始值设定项引发异常-->System.TypeInitializationException:该类型引发异常System.Windows.Forms.ThemeWin32Classic的初始值设定项-->System.TypeInitializationException:System.Drawing.Known颜色的类型初始值设定项-->System.TypeInitializationException:System.Drawing.GDIPlus的类型初始值设定项-->System.DllNotFoundException:引发异常:/tmp/install/lib/libgdiplus.so

通过谷歌搜索,我找到了mono的bug追踪器中的一个页面:

很明显,这个bug在一年前就已经修复了,但只是合并到mono 3.4.0中。解决方法是编辑该文件

$MONO/etc/mono/config
并删除两条有问题的行:

<dllmap dll="gdiplus" target="/tmp/install/lib/libgdiplus.so" />
<dllmap dll="gdiplus.dll" target="/tmp/install/lib/libgdiplus.so" />

这解决了问题