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.
La mejora de código abierto de .NET para Linux se llama Mono .
La compatibilidad está bien documentada (ver enlaces a continuación). Mono es compatible con LINQ, subprocesos y algunas otras funciones complicadas.
Incluso soporta InteropServices. Es posible usar DllImport en la biblioteca de Linux (!), Como
libc.so
por ejemplo.Mono puede admitir Android y iOS (están basados en Linux, ¿no?)
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 - Página con documentación.
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,