¿El conocimiento de C # tiene algún uso en un sistema Linux?


44

Sé C # y me gusta cambiar entre sistemas y usar Linux. ¿Puedo usar C # para crear aplicaciones que funcionen de forma nativa en Linux? ¿Qué debo hacer para aprovechar mi conocimiento de C # en un sistema Linux?

Tenga en cuenta que estoy especializado en Unity3D, pero todavía quiero crear aplicaciones de Linux usando C #.


1
KerbalSpaceProgram está escrito en Unity y se ejecuta en Win / Mac / Linux. Los complementos / Mods para KSP están escritos en C # y se pueden desarrollar en Win, Mac o Linux. Utilizo principalmente Mac ahora en lugar de Linux por $ REASONS, pero realizo el desarrollo de mod KSP en esa plataforma en C # y no en Windows. Es probable que escriba un código C # independiente con pruebas xUnit fuera de KSP pronto y será como cualquier otro desarrollo, pero tendré que ejecutarlo en mono. MechJeb tiene un Makefile de ejemplo que se basa en Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (requiere los juegos dlls de KSP para vincularse).
lamont

3
Las aplicaciones de C # no suelen ejecutarse de forma nativa en ningún lado.
Deja de dañar a Monica el

@OrangeDog Lo sé, incluso en Windows necesitas instalar .Net framework. Si dije "nativamente" quiero decir sin ninguna capa de emulación o compatibilidad. Básicamente, quiero decir que si Linux lo admite, no importa cuántos programas o paquetes necesite instalar.
Jacob

2
¿Qué relevancia tiene esto para Ubuntu?
underscore_d

2
@underscore_d No sé dónde escuchaste eso, pero no es cierto. Ver ¿Son las preguntas "no solo específicas de Ubuntu" sobre el tema? Muchas, muchas preguntas sobre Ask Ubuntu se aplican igualmente a la gran mayoría de los sistemas GNU / Linux. Quizás alguien encuentre una razón plausible para considerar esta pregunta fuera de tema, pero si es así, no será eso. (Por cierto, esto no tiene respuestas con información específica de Ubuntu-El segundo párrafo de mi post es acerca de los paquetes de Ubuntu, sino que se traslada a algunos, pero no todos, otras distribuciones..)
Elías Kagan

Respuestas:


55

Lo más probable es que te topes con http://www.mono-project.com/

Como dice la página Acerca de Mono :

Mono, la plataforma de desarrollo de código abierto basada en .NET Framework, permite a los desarrolladores crear aplicaciones multiplataforma con una productividad mejorada del desarrollador. La implementación de .NET de Mono se basa en los estándares ECMA para C # y Common Language Infrastructure .

Las plataformas compatibles incluyen Linux.


2
Mono ... suena familiar ... ¡Ah, sí, esto es en lo que se basa la unidad! No tenía idea de que puedo usarlo por separado. Pensé que es parte de Unity3d.
Jacob

41
La última versión de la implementación de Microsoft (.Net Core) también es compatible con Linux.
BlueRaja - Danny Pflughoeft

66
Mono implementa .net standard 2.0 (iirc) no solo core.
casey

13
Esta habría sido una buena respuesta hace unos años. Ahora es bastante obsoleto.
Konrad Rudolph

2
Si está utilizando una versión reciente de Ubuntu, por favor, no use mono, tiene tantos errores e implementaciones deficientes, use .net core. Donde trabajo, casi todos los problemas que tenemos al ejecutar aplicaciones de C # en distribuciones antiguas de Linux se pueden explicar con la declaración: "debido a mono". La excepción filtra la pérdida de los rastros de la pila, las implementaciones asíncronas que son envoltorios de Task.Run, las pérdidas de memoria en todo el disparo y la falta de soporte valgrind, por lo que ni siquiera puede diagnosticar adecuadamente la fuga.
Lukazoid

72

Sí, puede desarrollar software en Ubuntu, que se ejecutará en Ubuntu, en C #. Tanto Mono como .NET Core son compatibles con sistemas GNU / Linux como Ubuntu. (También puedes usarlos en otras distribuciones , como Debian, Raspbian, Fedora, CentOS, Arch, Gentoo, etc.). El motor del juego Unity3D también es compatible con Ubuntu, como probablemente ya sabes. Unity3D incorpora Mono .

Varios paquetes para Ubuntu, instalables con el administrador de paquetes de Ubuntu de fuentes de software oficialmente compatibles con la comunidad, están escritos en C # y usan Mono. Esto incluye el reproductor de música Banshee , la aplicación para tomar notas Tomboy , el editor de gráficos de trama Pinta y el administrador de contraseñas KeePass (desde la versión 2).

La mayoría de los editores de texto, como Gedit, Vim y Emacs, tienen resaltado de sintaxis para C #. MonoDevelop y Visual Studio Code son dos entornos de desarrollo integrados populares que se ejecutan en Ubuntu y admiten el desarrollo de C #.


10
Quizás también mencione Rider, el IDE basado en ideas inteligentes para C # que contiene toda la funcionalidad de ReSharper para Visual Studio.
Wilbert

Es posible que desee ajustar esta respuesta, por lo que implica que existen otras distribuciones de Linux. Dado que también proporcionarán o apoyarán mono, es posible que desee ser un poco más neutral e inclusivo.
user2066657

@ user2066657 Gracias por la sugerencia; He editado Tenía la intención de aclarar cómo Mono y .NET Core no se limitaban a Ubuntu ("sistemas GNU / Linux como Ubuntu"). Pero en una consideración posterior, me doy cuenta de que esto puede no haber sido claro para los lectores que aún no sabían lo que estaba tratando de decirles. Así que he expandido esa parte. Me doy cuenta de que esta edición puede no satisfacerte: la hice más inclusiva, pero no más neutral. Es razonable que las publicaciones en este sitio enfaticen Ubuntu. La parte central, que da ejemplos de programas C # con paquetes de Ubuntu posteriores, se centra deliberadamente en Ubuntu.
Eliah Kagan

Si el OP hubiera querido preguntar sobre sistemas operativos que no sean Ubuntu, probablemente lo habrían preguntado en Unix y Linux .
Sr. Lister el

@ MrLister Sí, de acuerdo. Pero creo que algo se gana, y nada se pierde, por la aclaración que he agregado. Sin embargo, no planeo modificar la publicación en su conjunto. Por ejemplo, consideré decir algo sobre qué distribuciones MonoDevelop y Visual Studio Code son razonablemente fáciles de instalar y usar, pero decidí no hacerlo, debido a que es algo complicado y terminaría cambiando el tono y el enfoque (¡y la duración! ) de la publicación.
Eliah Kagan

20
  1. Ahora puede desarrollar aplicaciones de servidor en Linux usando C # ( .NET Core framework), como puede usar Java o Python. Por aplicaciones de servidor me refiero a aplicaciones web y aplicaciones de servicio web (REST) ​​principalmente. Esto hace una combinación perfecta con los contenedores de Linux ( Docker / K8s) y las nubes.
  2. Puede desarrollar aplicaciones de escritorio con C # utilizando Mono Framework (una implementación de .NET) y el kit de herramientas GTK # (GtkSharp) (un contenedor de GTK). Hay muchos proyectos desarrollados en él. Este marco ha tenido cierta resistencia por parte de la comunidad de Linux en el pasado. Algunas distribuciones y usuarios no querían aplicaciones Mono.
  3. Puede desarrollar juegos con Unity Engine usando C # en Linux. Unity Editor es experimental en Linux todavía.

Entonces sí. El conocimiento sobre C # puede ser muy útil en los sistemas Linux de hoy.


44
También puede hacer aplicaciones de escritorio en .NET Core.
PmanAce

También puede usar Avalonia, una re-implementación de WPF multiplataforma para hacer aplicaciones móviles + de escritorio en Mac + Linux + Windows. ¡Finalmente un kit de herramientas de interfaz de usuario que no sea basura!
Chris Bordeman

2

Ahora puede incluso hacer aplicaciones de plataforma cruzada front-end basadas en XAML (Linux, Mac, Windows, Android, iOS, UWP) usando .Net Core y un nuevo proyecto llamado Avalonia. Avalonia está en Beta, pero ahora funciona bastante bien. Es similar a WPF, pero con algunas mejoras similares al estilo de CSS.

Creo que en Linux Avalonia apunta a Gtk actualmente, pero quieren pasar a otra cosa. Se menciona en este video, pero personalmente no pude entender lo que dijo: https://www.youtube.com/watch?v=WESJUJWBLJ0

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.