2009-06-28 19 views
5

Mi pregunta es similar a this one y this one, pero hay una pequeña diferencia. Entonces es por eso que lo estoy preguntando aquí.La limitación de Mono Runtime

Tengo un brillante .Net 3.5 Servicio de Windows (con NHibernate, LINQ, expresión lambda) etc., que se ejecuta en Windows. Ahora planeo portar mi aplicación a Linux, así que estoy pensando en Mono.

¿Puedo simplemente compilar mi aplicación .net en Windows, y copiarla en una máquina Linux con .Net (versión mono) instalado, y espero que funcione sin problemas? Si no, ¿hay algo que deba hacer?

Cualquier respuesta o punteros son bienvenidos.

+0

Creo que esto es en realidad un duplicado de la pregunta que ha vinculado, y otros como http://stackoverflow.com/questions/549166/how-mature-is-mono y http: // stackoverflow.com/questions/204709/is-mono-robust-enough-for-enterprise-development –

+0

No lo creo, esta pregunta es más específica que las dos que mencionaste. – Graviton

+0

No es una tontería, él está preguntando cómo portar su aplicación, no si Mono es lo suficientemente estable/maduro como para usarlo en producción. – Treb

Respuesta

7

de inicio mediante el uso de la MoMA tool

Mono Migration Analizador de herramienta (MoMA) ayuda a identificar los problemas que puede tener al portar 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. Si bien el MoMA puede ayudar a a mostrar problemas potenciales, hay muchos factores complejos que no se pueden cubrir con una simple herramienta. MoMA puede fallar a señalar las áreas que hará que problemas, y puede señalar las áreas que no será en realidad un problema

Desde el punto personal: Todo C# 3.0 función se soportan bien, no tuve ningún problema con LINQ (A los objetos, no sé acerca de LINQ to SQL o XML) y NHiberinate también funciona bien (aunque no terminé usando)

8

¿Funcionará? Realmente tiene para probarlo. Recientemente me he esforzado para hacer que los Protocolos de Protocolo trabajen en Mono. Hasta ahora he tenido muy pocos problemas de tiempo de ejecución; el compilador fue más un problema para mí. Sin embargo, he tenido que desactivar temporalmente una de las pruebas de la unidad (usando burlas) porque hace que la VM Mono 2.4 caiga. Todavía no investigué por qué, pero ese tipo de cosas es básicamente imposible de predecir.

Cualquier cosa que utilice aspectos "profundos" del CLR, como árboles de expresión y métodos dinámicos, es probable que tenga más problemas que las bibliotecas simples, IMO.

Ahora, dices que es un servicio de Windows, obviamente Linux no tiene los mismos servicios que Windows, por lo que tendrás que averiguar cómo quieres que se ejecute. Comenzaría ejecutándolo como una simple aplicación de consola si fuera usted ... una vez que todo esté funcionando, puede pensar en integrarlo con otros controladores de "servicio", etc., si lo necesita.

Ciertamente utilizado ser el caso de que xbuild no proporcionaron una ruta de migración sin problemas de la construcción en Windows para la construcción en Linux ... sin embargo, ha tenido mucha atención recientemente, por lo que vale la pena intentarlo de nuevo. ..

+0

Wow, ¿entonces realizaste las pruebas en Mono? ¿Compiló su código y pruebas en mono, también? – Graviton

+1

Sí, ahora todo se compila en mono, pero tuve que solucionar algunos problemas con el compilador, y el "sistema de compilación" es solo un script de shell con uso liberal de 'find '. -name '* .cs'. Debes * definitivamente * ejecutar tus pruebas unitarias bajo Mono ... pero ese es solo el primer paso, por supuesto. También deberá probar toda la aplicación manualmente. –

+0

Curiosamente, envié un buen número de errores de compilador mono al hacer protobuf-net ... todavía tiene algunos problemas para resolver, obviamente. –