update - windows 10 headphones mono
Cuál es el punto de Mono en Windows (12)
Esta puede ser una pregunta tonta ... pero solo estaba investigando el proyecto Mono y tienen una sección sobre la instalación de Mono en Windows . Pero, dado que Windows obviamente ya tiene el tiempo de ejecución de .NET, ¿alguien puede decirme cuál es exactamente el punto de tener Mono para Windows? ¿Ayuda con el desarrollo de plataformas cruzadas o algo así?
Algunas personas lo han usado porque no están autorizados a instalar .Net Framework en sus PC con Windows, debido a la cantidad de registros y archivos del sistema que lo destruyen. (En ambientes estrechamente controlados)
Mono, por otro lado, está autocontenido en Archivos de programa y solo escribe una clave de registro con una ruta de acceso (que no es necesario ejecutar).
Creo que esto es un poco tonto, pero es algo que muchos usuarios nos han contado.
Aunque no es de gran interés, hay algunos casos en que el mono tiene mejoras sobre el tiempo de ejecución estándar de Microsoft. Migel dio una charla sobre algunos de estos en PDC este año:
Ver estas publicaciones:
Creo que la razón principal por la que hicieron esto es para que puedan ejecutar aplicaciones .NET en Mono y .NET de lado a lado para compararlas. Además, hay algunas aplicaciones que dependen de las bibliotecas Mono.
De las preguntas frecuentes técnicas de Mono:
¿Por qué dar soporte a Windows, cuando puedes ejecutarlo de verdad?
Hay varias razones:
El soporte de Windows nos ayuda a identificar las porciones portátiles de Mono a partir de las versiones no portátiles del mismo, lo que ayuda a Mono a ser más portátil en el futuro.
Nos ayuda porque podemos aislar los problemas en Mono al particionar el problema (¿es un problema de tiempo de ejecución o un problema de sistema operativo?).
Aproximadamente la mitad de los contribuidores a Mono son desarrolladores de Windows. Tienen muchas razones diferentes para contribuir al esfuerzo, y nos parece muy importante permitir que esos desarrolladores ejecuten el tiempo de ejecución en Windows sin forzarlos a usar un nuevo sistema operativo.
Mono no modifica en gran medida el registro de Windows, actualiza las DLL del sistema, instala las DLL en la ruta de Windows / System32.
Ayuda a los desarrolladores basados en Windows a probar su código en Mono antes de implementarlo en Linux.
Mono y las aplicaciones que integran Mono se pueden implementar sin un instalador (puede "copiar" la implementación de su aplicación y los archivos Mono necesarios sin instalar el tiempo de ejecución de .NET).
Debido a que Mono no implementa .Net 100% al igual que MS .Net Framework, es bueno que pueda probar en Mono sin tener que ejecutar en Linux. También Mono tiene enlaces para crear formularios con GTK que MS no admite.
Está principalmente allí como una ayuda para desarrollar aplicaciones Mono para las bibliotecas específicas de Mono. También para ayudar a promover la causa, para que los desarrolladores puedan trabajar en su entorno natural cuando se desarrollan para Mono.
Hay un par de características que Mono tiene que .NET no tiene.
Mono es altamente modular. Puede dividirlo en pedazos pequeños y desplegar exactamente las partes que necesita. ¿No quieres System.Xml? Bien, se fue.
Mono es incrustable. Puede alojarlo dentro de su aplicación C / C ++, para permitir que los usuarios lo guionen desde un entorno de entorno seguro administrado. El ejemplo más famoso de esto es mod_mono, que aloja Mono dentro del servidor web Apache, y es cómo ASP.NET se implementa en Mono, por ejemplo. Esta característica va muy bien junto con la modularización mencionada anteriormente.
Esto ya se ha mencionado: vinculación estática. También funciona muy bien junto con la modularización.
El compilador como servicio es otro. Anders Hejlsberg ha estado hablando de esto durante mucho tiempo, y tal vez , tal vez esté listo para C # 5.0. Bueno, Mono ya lo tiene, y de hecho lo tuvo durante años.
Miguel de Icaza, Desarrollador principal de Mono también tiene una iniciativa que llama "Embrace and Extend.NET", que amplía la CLI de formas que (actualmente) no son posibles con otras implementaciones CLI (incluido .NET). Hasta ahora, Embrace and Extend.NET tiene tres características.
Mono.Simd, que brinda acceso seguro y controlado a las instrucciones SIMD de la CPU subyacente (por ejemplo, SSE en Intel o AltiVec en PowerPC). Utilizado para juegos y gráficos.
Los índices de matriz de 64 bits, que están permitidos por la especificación ECMA, pero Mono es la única máquina virtual que realmente los proporciona. Utilizado en supercomputación.
Y más recientemente, continuaciones. Esta es realmente la primera vez que Mono se desvía del dominio de la especificación: los índices de matriz larga son perfectamente válidos según la especificación, y Mono.Simd también funciona en cada implementación CLI (aunque muy lenta), pero Mono.Tasklet necesita especial soporte de la VM que no es parte de CLI o .NET. Esto se usa para la lógica del juego y, por ejemplo, en Second Life.
Para agregar a las numerosas razones mencionadas en otras respuestas, es posible que se requiera que Mono for Windows esté instalado en Wine para permitir la ejecución de aplicaciones .Net dentro de Wine.
Si desea desarrollar una aplicación multiplataforma en C #, entonces el uso de la implementación de Microsoft no es lo más inteligente, ya que no existe una alternativa totalmente compatible para otras plataformas.
Por lo tanto, si utiliza Mono en Windows para desarrollar aplicaciones, se asegurará de que tendrá pocos problemas para transferirlo a otro SO (siempre que evite otros pozos como P / Invoke).
incluso si tiene un programa enlazado dinámicamente con Mono, puede tener ese compilador .exe y Mono runtime en pendrive e ir a otra computadora sin .NET / Mono instalado, y ejecutar ese programa en la nueva PC sin ninguna instalación en tiempo de ejecución. es decir, conduce a aplicaciones portátiles (particularmente útiles como aplicaciones portátiles con pen drive USB). Esto no es posible con .NET. Debe tener .NET runtime instalado en un instalador particular, es decir, el tiempo de ejecución que contiene la carpeta copiar y pegar no es posible.
Mono does some things the .Net doesn''t.
Por ejemplo, mono admite enlaces estáticos para que pueda compilar, compilar y distribuir su aplicación sin necesidad de un instalador de tiempo de ejecución por separado. Si creaste una aplicación para que se basara en el modo mono para ser multiplataforma, existen algunas diferencias, por lo que usar mono en Windows es una mayor garantía de compatibilidad..Net does some things that mono doesn''t.
Hay algunos lugares en el BCL que aún no están portados para mono. Si desea una aplicación que también funcione en mac / linux, probablemente desee desarrollar primero en mono, incluso si está trabajando en Windows.