Diferencias en el desarrollo between.NET y Mono


Estoy buscando en Mono y.NET C# y necesitaremos ejecutar el código en servidores Linux en el futuro cuando se desarrolle el proyecto. En este punto he estado mirando ASP.NET MVC y Mono.

Corro una distribución de Ubuntu y quiero hacer desarrollo para una aplicación web, algunos de los otros desarrolladores usan Windows y ejecutan otros elementos de.NET con Visual Studio.

¿Qué no proporciona Mono que Visual Studio hace?

Si ejecuta esto en Linux más tarde ¿no deberíamos usar MonoDevelop?

¿Hay algunas herramientas o complementos de terceros que podrían ser un problema con Mono más adelante?

 24
Author: Igor Popov, 2010-05-06

8 answers

¿Qué no proporciona Mono que Visual Studio hace?
MonoDevelop es presumiblemente lo que quiere decir aquí. MonoDevelop ofrece desarrollo multiplataforma en Linux, Mac OS X, Windows basado en GTK. Sin embargo, no es tan pulido como Visual Studio por razones obvias: son 3 personas las que lo hacen, no cientos. Tiene algunas características agradables, especialmente su arquitectura de plugin de control de código fuente. Sin embargo, como Visual Studio Express es gratis, no hay muchas ventajas en Windows para usar se.

Utiliza el mismo formato .csproj y .sln que Visual Studio, sin embargo el formato XML docs es diferente.

Si ejecutamos esto en Linux más tarde, ¿no deberíamos usar MonoDevelop ?
Como mencioné anteriormente, los formatos de proyecto son interoperables.

¿Hay algunas herramientas o complementos de terceros que podrían ser un problema con Mono más adelante?
A diferencia de Visual Studio, no hay una gran cantidad de complementos para Monodevelop. Los que usas en Monodevelop no efectuar su .archivos csproj en absoluto, ya que cualquier cosa que Visual Studio no puede leer generalmente ignora.


Como la gente ha dicho, no confundas Mono con MonoDevelop. MonoDevelop es un IDE para Mono que originalmente vino de (bifurcado) SharpDevelop.

Mono es el framework multiplataforma que 'imita' a las bibliotecas CLR y framework de Microsoft.

 19
Author: Chris S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-01 08:03:51

No tengo mucha experiencia en esta área, pero...

La Hoja de ruta del Proyecto Mono tiene una visión general de las características que son nuevas, próximas y no presentes en Mono en comparación con MS.NET.Incluso cuando Mono tiene las mismas clases que. NET, tenga en cuenta que la compatibilidad no es 100% (aunque ese es generalmente su objetivo). No estoy seguro de si existe una lista completa de cosas que faltan en Mono.

MonoDevelop ahora está disponible tanto en Windows como en Linux, por lo que probablemente sea mejor usar se. Sin embargo, MonoDevelop parece usar el mismo formato de archivo de proyecto que Visual Studio y SharpDevelop, por lo que podría intentar mezclar IDEs.

Por supuesto, cuando se usan bibliotecas.NET de terceros, tenga en cuenta que muchas de ellas no se han probado con mono, y en particular cualquier cosa que use P/Invoke no funcionará en Mono para Linux. Sin embargo, la mayoría de las incompatibilidades con mono son menores, y si se mantiene con bibliotecas de código abierto, siempre puede corregir cualquier incompatibilidad que ejecute en.

 5
Author: Qwertie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-06 18:12:31

También puede echar un vistazo a Herramientas Mono para Visual Studio. Permite a sus desarrolladores de visual studio dirigirse y probar con la plataforma mono.

 5
Author: Joel Coehoorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-06 18:20:06

Tu objetivo es tener siempre soporte, y/o usar principalmente el software en Linux, ¿correcto? Esta es en realidad una pregunta que hice a los desarrolladores de Mono en una conferencia hace un tiempo, y básicamente se redujo a lo que quieres hacer con ella.

Si quieres que funcione siempre en Linux, usa Mono. Si solo te importa Windows, usa Visual Studio.

Si está utilizando Mono, utilice MonoDevelop en todos los desarrolladores. Hará la vida mucho más fácil más adelante, y se asegurará de que lo que escribas en el uno funcione para todos.

Desafortunadamente, no sé la respuesta a los límites/ventajas exactos de Mono vs.. NET, aparte de. NET está más adelante, y Mono jugar ponerse al día, ni acerca de diferentes complementos.

 1
Author: Tarka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-06 17:58:30

Si ninguno de sus desarrolladores necesita desarrollar en Mono para ciertas características, sugiero que todos usen Visual Studio en Windows. A continuación, probar las aplicaciones en Mono vía

  1. Herramientas Mono para Visual Studio
  2. copie manualmente los binarios sobre
  3. echa un vistazo al código en Linux y compila en MonoDevelop.

Personalmente experimenté muchos pequeños problemas cuando probé la tercera forma, pero afortunadamente soy capaz de encontrar soluciones.

Es solo cuando toque Mono, usted sabe qué parte de su aplicación necesita ser afinada.

Http://www.mono-project.com/Start

 1
Author: Lex Li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-07 06:46:07

Si puede ayudarlo, recomendaría evitar la implementación Mono de la comunicación remota. Parece haber algunos contratiempos inesperados y la depuración no es sencilla.

Teníamos un producto pesado muy remoto que intentamos portar a Mono para poder soportar Linux. Debido a que no pudimos resolver los problemas Remotos, finalmente tuvimos que abandonar nuestros intentos de soportar Linux por completo.

Advertencia : mis experiencias pueden ser anticuadas. Véanse los comentarios siguientes

 1
Author: Dinah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-07 17:43:22

No necesitas MonoDevelop para ejecutar ASP.NET programe en Linux, cree una carpeta compartida en su servidor de desarrollo (VMware o real), pruebe a menudo para que pueda resolver fácilmente lo que falta en Mono

Ese es el mismo enfoque que estoy usando en mi programa Remoto.NET que alojo en Ubuntu server. Pero hago lo contrario, ya que soy un programador en solitario, hago una carpeta compartida en mi máquina de desarrollo de Windows, luego acceder a esa carpeta compartida en mi servidor de prueba de Ubuntu (vmware). En ASP.NET cosas, si los cambios no se reflejan en su servidor de prueba de Ubuntu, en Terminal simplemente toque la Web.Archivo de configuración en su servidor de prueba de Ubuntu. es decir, touch Web.Config, luego actualice la página

 0
Author: Michael Buen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-07 16:10:17

Mono tiene una implementación completamente funcional de ASP.NET. Esto incluye soporte completo para ASP.NET Formularios Web y Servicios Web. Esto significa esencialmente que más o menos cualquier ASP.NET la aplicación que haya desarrollado con. NET Framework funcionará con Mono. Obviamente, puede haber cambios necesarios, como cambios en el acceso a los datos, la eliminación de cualquier confianza en los tipos BCL de. NET Framework . Mono-Oráculo users-.Net Programación en C#: ubuntu 11.04

 0
Author: abhilash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-27 11:16:31