O conhecimento de C # é útil em um sistema Linux?

44

Eu sei C # e gosto de alternar entre sistemas e usar Linux. Posso usar o C # para criar aplicativos que funcionem nativamente no Linux? O que devo fazer para usar meu conhecimento de c # em um sistema Linux?

Observe que sou especializado em Unity3D, mas ainda quero criar aplicativos Linux usando C #.

Jacob
fonte
1
O KerbalSpaceProgram é escrito no Unity e é executado no Win / Mac / Linux. Plugins / Mods para KSP são escritos em C # e podem ser desenvolvidos em Win, Mac ou Linux. Agora uso principalmente o Mac agora, em vez do Linux, por $ REASONS, mas desenvolvo o KSP mod nessa plataforma em C # e não no Windows. Provavelmente vou escrever algum código C # independente com testes xUnit fora do KSP em breve e será como qualquer outro desenvolvimento, mas precisarei executá-lo em mono. O MechJeb tem um exemplo de Makefile baseado no Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (requer que as DLLs do jogo KSP sejam vinculadas).
27418
3
Aplicativos C # geralmente não são executados nativamente em qualquer lugar.
parar de prejudicar Monica
@ OrangeDog eu sei, mesmo no Windows você precisa instalar o .Net framework. Se eu disse "nativamente", quero dizer, sem qualquer camada de emulação ou compatibilidade. Quero dizer, basicamente, se o Linux suporta, não importa quantos programas ou pacotes você precise instalar.
Jacob
2
Que relevância isso tem para o Ubuntu?
underscore_d
2
@underscore_d Não sei onde você ouviu isso, mas não é verdade. Consulte “Não são apenas perguntas específicas do Ubuntu” no tópico? Muitas, muitas perguntas no Ask Ubuntu se aplicam igualmente à grande maioria dos sistemas GNU / Linux. Talvez alguém encontre uma razão plausível para considerar esta questão fora de tópico, mas, se sim, não será isso. (Btw, isso não tem respostas com informações específicas do Ubuntu O segundo parágrafo do meu post é sobre pacotes do Ubuntu, que transporta mais para alguns, mas não todos, outras distros..)
Elias Kagan

Respostas:

55

Muito provavelmente você encontrará http://www.mono-project.com/

Como diz a página Sobre o mono :

Mono, a plataforma de desenvolvimento de código aberto baseada no .NET Framework, permite que os desenvolvedores criem aplicativos de plataforma cruzada com maior produtividade do desenvolvedor. A implementação .NET da Mono é baseada nos padrões ECMA para C # e na Common Language Infrastructure .

As plataformas suportadas incluem Linux.

Finlandês
fonte
2
Mono ... parece familiar ... Ah, sim, é nisso que se baseia a unidade! Eu não tinha ideia de que posso usá-lo separadamente. Eu pensei que faz parte do Unity3d.
Jacob
41
A versão mais recente da implementação da Microsoft (.Net Core) também suporta Linux.
BlueRaja - Danny Pflughoeft 04/04
6
O Mono implementa o .net padrão 2.0 (iirc) e não apenas o núcleo.
casey
13
Esta teria sido uma boa resposta há alguns anos atrás. Agora está praticamente obsoleto.
Konrad Rudolph
2
Se você estiver usando uma versão recente do Ubuntu, por favor, não use o mono, ele tem muitos erros e implementações ruins, use o núcleo .net. Onde trabalho, quase todos os problemas que temos ao executar aplicativos C # em distros linux antigos podem ser explicados com a declaração: "por causa do mono". Os filtros de exceção perdem rastreamentos de pilha, implementações assíncronas que são wrappers Task.Run, vazamentos de memória por toda parte e falta de suporte ao valgrind para que você não possa diagnosticar corretamente o vazamento.
Lukazoid
72

Sim, você pode desenvolver um software no Ubuntu, que será executado no Ubuntu, em C #. O Mono e o .NET Core suportam sistemas GNU / Linux como o Ubuntu. (Você também pode usá-los em outras distros , como Debian, Raspbian, Fedora, CentOS, Arch, Gentoo e assim por diante.) O mecanismo de jogo Unity3D também suporta o Ubuntu, como você provavelmente sabe. O Unity3D incorpora o Mono .

Vários pacotes para o Ubuntu, instaláveis ​​com o gerenciador de pacotes do Ubuntu a partir de fontes de software oficialmente suportadas pela comunidade, são escritos em C # e usam o Mono. Isso inclui o music player Banshee , o aplicativo de anotações Tomboy , o editor de gráficos raster Pinta e o gerenciador de senhas KeePass (desde a versão 2).

A maioria dos editores de texto, como Gedit, Vim e Emacs, possui destaque de sintaxe para C #. O MonoDevelop e o Visual Studio Code são dois ambientes populares de desenvolvimento integrado que são executados no Ubuntu e suportam o desenvolvimento de C #.

Eliah Kagan
fonte
10
Talvez também mencione o Rider, o IDE para C # baseado em ideias que contém todas as funcionalidades do ReSharper for Visual Studio.
Wilbert #
Você pode ajustar essa resposta para que isso implique que outras distribuições de linux existam. Como eles também fornecem ou oferecem suporte mono, você pode ser um pouco mais neutro e inclusivo.
user2066657
@ user2066657 Obrigado pela sugestão; Eu editei. Eu pretendia deixar claro como o Mono e o .NET Core não se limitavam ao Ubuntu ("sistemas GNU / Linux como o Ubuntu"). Mas, considerando melhor, percebo que isso pode não estar claro para os leitores que ainda não sabiam o que eu estava tentando lhes dizer. Então, eu expandi essa parte. Sei que essa edição pode não lhe agradar: tornei-a mais inclusiva, mas não mais neutra. É razoável que as postagens neste site enfatizem o Ubuntu. A parte do meio, dando exemplos de programas em C # com pacotes Ubuntu downstream, é deliberadamente focada no Ubuntu.
Eliah Kagan 06/04/19
Se o OP quisesse perguntar sobre sistemas operacionais não-Ubuntu, provavelmente o teria perguntado no Unix e Linux .
Sr. Lister
@MrLister Sim, concordou. Mas acho que algo é ganho, e nada é perdido, pelos esclarecimentos que acrescentei. Porém, não pretendo reformular a publicação como um todo. Por exemplo, considerei dizer algo sobre quais distros o MonoDevelop e o Visual Studio Code são razoavelmente fáceis de instalar e usar, mas decidi não fazê-lo, pelo fato de ser um pouco complicado e acabar mudando o tom e o foco (e o comprimento! ) da postagem.
Elias Kagan
20
  1. Agora você pode desenvolver aplicativos de servidor no Linux usando C # ( estrutura do .NET Core ), como é possível usar Java ou Python. Por aplicativos de servidor, quero dizer aplicativos da Web e aplicativos de serviço da Web (REST). Isso combina perfeitamente com contêineres Linux ( Docker / K8s) e nuvens.
  2. Você pode desenvolver aplicativos da área de trabalho com C # usando o kit de ferramentas Mono Framework (uma implementação .NET) e GTK # (GtkSharp) (um invólucro do GTK). Existem muitos projetos desenvolvidos nele. Essa estrutura teve alguma resistência por parte da comunidade do Linux no passado. Algumas distribuições e usuários não desejavam aplicativos Mono.
  3. Você pode desenvolver jogos com o Unity Engine usando C # no Linux. O Unity Editor ainda é experimental no Linux.

Então sim. Hoje, o conhecimento sobre C # pode ser muito útil nos sistemas Linux.

gorlok
fonte
4
Você também pode executar aplicativos da área de trabalho no .NET Core.
PmanAce
Você também pode usar o Avalonia, uma reimplementação WPF de plataforma cruzada para executar aplicativos móveis + de desktop no Mac + Linux + Windows. Finalmente, um kit de ferramentas de interface do usuário que não seja lixo!
Chris Bordeman 9/11
2

Agora você pode até executar aplicativos de plataforma cruzada de front-end baseados em XAML (Linux, Mac, Windows, Android, iOS, UWP) usando o .Net Core e um novo projeto chamado Avalonia. Avalonia está na versão beta, mas funciona muito bem agora. É semelhante ao WPF, mas com algumas CSS, como aprimoramentos no estilo.

Acredito que o Avalonia no Linux tenha como alvo o Gtk atualmente, mas eles querem mudar para outra coisa. Ele foi mencionado neste vídeo, mas eu pessoalmente não conseguia entender o que ele disse: https://www.youtube.com/watch?v=WESJUJWBLJ0

Chris Bordeman
fonte