visual studio net mac c# .net linux mono

c# - studio - mono windows



EjecuciĆ³n de la aplicaciĆ³n.Net usando Mono en CentOS o Linux (2)

Has rastreado el error incorrectamente. Su versión mono no es compatible con EnableVisualStyles. Actualice a una versión que lo soporte (por lo que recuerdo es> = 2.9) o intente desactivar esta característica en su aplicación .net, lo que dará como resultado "elementos de la interfaz de usuario no tan agradables". Para mí funcionó, ya que estaba trabajando en gentoo. De repente, después de emerger, mi aplicación mono no se colgó más.

Desarrollé una aplicación de prueba usando WinForm en C # .Net en Visual Studio 2010. Ahora, quiero ejecutar esto bajo Linux usando Mono en CentOS. Así que probé debajo de la secuencia de comandos -

[root@localhost TestLinux]# /usr/bin/mono ./Test.exe

Llegué a una excepción

Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: gdiplus.dll at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&) at System.Drawing.GDIPlus..cctor () [0x00000] --- End of inner exception stack trace --- at <0x00000> <unknown method> at System.Drawing.Graphics.FromHdcInternal (IntPtr hdc) [0x00000] at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) [0x00000] at System.Windows.Forms.XplatUIX11..ctor () [0x00000] at System.Windows.Forms.XplatUIX11.GetInstance () [0x00000] at System.Windows.Forms.XplatUI..cctor () [0x00000] --- End of inner exception stack trace --- at <0x00000> <unknown method> at System.Windows.Forms.Application.EnableVisualStyles () [0x00000] at Test.Program.Main () [0x00000]

Mientras hacía una investigación, descubrí que esto se debe a la vinculación entre gdiplus.dll y su contraparte libgdiplus.so.0 en Linux, y necesito poner su entrada en el caché ldconfig.

[root@localhost TestLinux]# ldconfig -p | grep libgdiplus libgdiplus.so.0 (libc6) => /usr/lib/libgdiplus.so.0

El resultado muestra claramente que libgdiplus.so.0 está allí en caché ldconfig pero aún así el programa no está funcionando. También traté de agregar la entrada DllMap en la configuración de la aplicación como se muestra a continuación

<?xml version="1.0"?> <configuration> <startup> <supportedRuntime version="v2.0.50727"/> </startup> <dllmap dll="gdiplus.dll" target="libgdiplus.so.0"/> </configuration>

Por favor, avíseme si alguien tropezó con esto en el pasado.


También asegúrese de que libgdiplus.so.0 está realmente instalado y en la ruta, no está por defecto en mono. Pero sí, lo principal es que CentOS viene con una versión obsoleta de mono por defecto.