Questão Como escrever programas nativos do Ubuntu com o MonoDevelop?


Eu escrevi alguns programas simples de console C # no Monodevelop, mas parece que eles correm em algum ambiente emulado durante a depuração. O resultado final é um arquivo .exe que não roda nativamente no Ubuntu.

O que eu preciso saber é se o Mono é igual ao Visual C # no Windows? Podemos criar aplicativos GUI nativos com o Monodevelop, assim como podemos fazer com o QT Creator (Linux) / Visual Studio (Windows)? Se sim, como? Se não, por quê? Por que precisamos do Mono no Linux?


1
2018-01-07 22:43


origem


Estes não são (especificamente) aplicativos do Windows; C # é uma linguagem .NET e destina-se à criação de executáveis ​​de plataforma cruzada executados em uma implementação do .NET Common Language Runtime. No Ubuntu, essa implementação é (normalmente) Mono. Isso é, em certo sentido, um ambiente emulado, mas (a grande maioria dos) programas C # sempre são executados dessa maneira, mesmo em produção. Se você não explicitamente quer isso, você provavelmente quer usar um idioma diferente. Parece que o que você está perguntando aqui é totalmente respondido em essa questão (nós poderíamos talvez enganar isso). - Eliah Kagan
@EliahKagan mm ... essa pergunta tem um escopo diferente deste. Talvez nós precisemos explicar completamente como o Mono funciona (acredito que seu comentário faça isso). - Braiam
GunJack: Você sente que o que você está perguntando não é realmente respondido por a informação lá? Se sim, então talvez não devêssemos fechar isto (ou reabri-lo se ele for fechado). Por favor nos informe! Você pode fazer isso comentando ou editando sua pergunta. @Braiam Hmm ... já temos uma pergunta que explica o Mono e como os programas que serão executados no Mono (como a maioria dos programas em C #, pelo menos a maioria dos desenvolvidos com o MonoDevelop) são diferentes dos executáveis ​​nativos do Linux? Eu estaria disposto a expandir meu comentário para uma resposta completa aqui, mas talvez já tenhamos? - Eliah Kagan
Eu não acho que a outra questão esteja de acordo com o que eu procuro saber. Eu editei minha pergunta para tornar mais compreensível. Desculpe pelo mau Inglês, eu não sou um falante nativo. - GunJack


Respostas:


C # e todas as outras linguagens pertencentes ao .NET framework são linguagens interpretadas. Eles são pseudo-compilados, não verdadeiramente compilados (como C). O bytecode do framework .NET é chamado Linguagem Intermediária Comum (CIL).

O intérprete (às vezes conhecido como "máquina virtual") para a Common Intermediate Language é o Tempo de execução de linguagem comum do .NET no Windows e Mono no Linux. Portanto, os aplicativos C # não serão executados "nativos" (ou seja, sem um intérprete), nem mesmo no Windows.

Provavelmente, o que o surpreende é que o Mono não é instalado por padrão em algumas distribuições do Linux, enquanto o runtime do .NET é.

De qualquer forma, você pode escrever aplicativos em C # que estão bem integrados ao Ubuntu. Um exemplo é Mamona.

Há também uma outra linguagem, semelhante ao C #, desenvolvida pelo projeto GNOME, que é Vala. Vala é traduzido em C, que é ele próprio compilado, por isso será executado "nativo". Como o Vala foi criado por desenvolvedores do GNOME para desenvolvedores do GNOME, é extremamente fácil integrá-lo ao ambiente de área de trabalho do GNOME.


1
2018-01-09 13:38



Então, como podemos obter esse interpretador no Ubuntu / Linux, ou seja, qual é a alternativa do .NET para o Ubuntu / Linux? - GunJack
@GunJack: é Mono. - Andrea Corbellini
Ok obrigado pelo esclarecimento. Agora, o Mono é o tempo de execução e o MonoDevelop é um IDE como o Visual Studio. - GunJack
@ GunJack: exatamente. - Andrea Corbellini


Para desenvolver para o Ubuntu use o QML SDK:

Obtenha o SDK | Desenvolvedor Ubuntu


1
2018-01-09 13:41



Isso é para desenvolvimento de telefone ou para desenvolvimento de desktop - GunJack