visual unity studio para mac actualizar c# .net linux mono wine

c# - studio - monodevelop unity 2018



¿Cómo escribir programas en C#.NET, para ejecutarlos en Linux/Wine/Mono? (4)

¿Has leído sobre Mono.NET en http://www.mono-project.com ?

Le permite escribir aplicaciones .NET para Linux con pequeñas diferencias sobre la implementación de Microsoft. No creo que el vino haga frente a ninguno de los componentes .NET.

Solo lee la documentación antes y tienes una oportunidad.

PD: Esto también te da la lista de compatibilidad entre mono y .NET. http://www.mono-project.com/Compatibility y MoMA (analizador de migración mono) es una herramienta que escaneará cualquier aplicación .NET ya creada para ver si es compatible con la implementación en Linux.

En este caso particular, necesito ejecutar la aplicación .NET para Linux. Por complicado, quiero decir, ese proyecto se desarrolló durante 3 años y no quiero volver a escribirlo en java o algo más, y desarrollar y admitir las versiones .NET y Java más adelante.

La aplicación está generando eventos de mouse y teclado (mediante la importación de winapi / dll) y utiliza el puerto serie. También tengo pocos temporizadores para demoras, para comunicación de puerto serie (10-20 ms, no necesito gran precisión aquí).

El resto es solo un código simple, nada especial, sin controles extraños, sin directx, etc.

¿Qué debo esperar? esto funcionara?

Si alguna parte del código falla, puedo cambiarlo un poco, hacer una conexión de red entre la aplicación .net y la mini-aplicación en Linux que puedo escribir para enviar eventos de mouse y teclado, o comunicación RS232.

Además quiero preguntar sobre Wine y .NET en general:

¿Cómo escribir aplicaciones .NET que deberían ejecutarse en Linux / Wine / Mono?

  • ¿Qué versión de framework? (1.x, 2.0 o puedo usar 3.5?)
  • ¿Qué debo evitar (las importaciones de Windows dll? temporizadores?)

Editar / mover del comentario:

Vi mono hace unos años, pero fue terrible. Ahora lo veo crecer, es compatible con LINQ, Threading y otras características complicadas. Además ahora la ayuda se ve muy seria. No estoy aceptando la respuesta todavía, porque veo que la gente sigue publicando enlaces muy útiles. Si esta pregunta obtiene muchos +1, la reescribiré y quizás esto ayude a otros.

Espero que alguien aquí tenga alguna experiencia práctica con .NET en linux aquí ...


En este post acorté y combiné toda la información que aprendí de otros en este hilo.

  1. La mejora de código abierto de .NET para Linux se llama Mono .

  2. La compatibilidad está bien documentada (ver enlaces a continuación). Mono es compatible con LINQ, subprocesos y algunas otras funciones complicadas.

  3. Incluso soporta InteropServices. Es posible usar DllImport en la biblioteca de Linux (!), Como libc.so por ejemplo.

  4. Mono puede admitir Android y iOS (están basados ​​en Linux, ¿no?)

  5. Existe una herramienta para el análisis de compatibilidad de Mono llamada MoMA (Mono Migration Analyzer)

La herramienta Mono Migration Analyzer (MoMA) lo ayuda a identificar los problemas que puede tener al trasladar su aplicación .Net a Mono. Ayuda a identificar llamadas específicas de la plataforma (P / Invoke) y áreas que aún no son compatibles con el proyecto Mono.

Enlaces útiles:

Mono

Mono - Página con documentación.

http://www.mono-project.com/Compatibility

MoMA - Mono Migration Analysis page


Puede desarrollar aplicaciones C # en Linux con .NET Core: https://www.microsoft.com/net/core

Después de instalarlo, escriba dotnet new en su terminal para obtener una lista de plantillas de aplicaciones que puede generar para que pueda comenzar.

A partir de .NET Core 2.0 hoy, esta es la lista:

Templates Short Name Language Tags -------------------------------------------------------------------------------------------------------- Console Application console [C#], F#, VB Common/Console Class library classlib [C#], F#, VB Common/Library Unit Test Project mstest [C#], F#, VB Test/MSTest xUnit Test Project xunit [C#], F#, VB Test/xUnit ASP.NET Core Empty web [C#], F# Web/Empty ASP.NET Core Web App (Model-View-Controller) mvc [C#], F# Web/MVC ASP.NET Core Web App razor [C#] Web/MVC/Razor Pages ASP.NET Core with Angular angular [C#] Web/MVC/SPA ASP.NET Core with React.js react [C#] Web/MVC/SPA ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA ASP.NET Core Web API webapi [C#], F# Web/WebAPI global.json file globaljson Config Nuget Config nugetconfig Config Web Config webconfig Config Solution File sln Solution Razor Page page Web/ASP.NET MVC ViewImports viewimports Web/ASP.NET MVC ViewStart viewstart Web/ASP.NET

La última versión actual es 2.0.


Tenemos un par de aplicaciones .net que se ejecutan en Windows o Linux con Mono.

Puede desarrollar en VisualStudio si lo desea, no es necesario utilizar el entorno de desarrollo Mono. Solo se requieren las bibliotecas mono de tiempo de ejecución para ejecutar aplicaciones .net en Linux.

Usamos net 2.0 target para compilar estas aplicaciones en VisualStudio, porque mono es casi 100% compatible con .net 2.0. Mono también implementa APIS de versiones .net posteriores, pero no todas y no tan completas. Si usa características de versiones más nuevas que 2.0, debe verificar si son compatibles o usar la herramienta de análisis de compatibilidad Mono. También puedes usar Mono Develop en lugar de Visual Studio, mi predecesor estaba haciendo eso; el resultado es prácticamente el mismo, y prefiero usar Visual Studio en su lugar.

No encontramos ningún problema importante, y las aplicaciones son relativamente complejas, con múltiples subprocesos, E / S asíncronas, WinForms, sockets, puertos serie, etc.

Algunas aplicaciones utilizan las bibliotecas .net que no están disponibles en MS .net, pero todas pueden instalarse también en Windows para que no haya problemas para ejecutar estas aplicaciones en Windows.

Espero que ayude,