Codigos Fonte, Artigos e Dicas
Mono: C# no Linux

O que é o Projeto Mono?
Em resposta simples, é uma implementação open source da plataforma .NET baseado nos padrões ECMA para a linguagem C#
O que é ECMA? Empresa fundada em 1961, dedicada a padronização de informações e comunicação de sistemas -> http://www.ecma-international.org/
Resumindo para os amantes do linux, o projeto Mono é o C# para Linux!
Isso pode acontecer porque diferentemente do Visual Basic a Microsoft padronizou o C#, linguagem criada por Anders Hejlsberg, criador também do Turbo Pascal e Delphi.
Download do Mono
Você encontra todos os pacotes source aqui, mas muito provavelmente você já terá nos repositórios de sua distro os pacotes pré compilados.
Compiladores
Existe 3 compiladores no projeto mono:
mcs -> Usado para compilar códigos do framework .Net 1.1, implementa C# 1.0 e partes do 2.0 e 3.0
gmcs -> Compila códigos do framework .Net 2.0 e tem total implementação do C# 3.0
smcs -> Usado para compilação para a plataforma Silverlight/Moonlight
Todos os fontes devem possuir a extensão “.cs”, caso contrário o compilador mostrará uma mensagem de erro, ao compilar o seu código ele vira um arquivo com a extensão “.exe”, que você pode executar dentro do próprio Linux usando o comando “mono”
Exemplos:
using System;
public class HelloWorld
{
static public void Main ()
{
Console.WriteLine ("Mono Olá Mundo");
}
}
Para compilar:
$ mcs hello.cs
Ou troque o mcs pelo gmcs, agora para executar você já deve ter adivinhado né?
$ mono hello.exe
Simples assim. O c# também pode usar a biblioteca GTK para criar o front-end, exemplo segue abaixo:
using Gtk;
using System;
class Hello {
static void Main()
{
Application.Init ();
Window window = new Window ("titulo da Janela");
window.Show();
Application.Run ();
}
}
$ gmcs hello.cs -pkg:gtk-sharp-2.0 $ mono hello.cs
O compilador por padrão só referência três assemblies: mscorlib.dll, System.dll e System.XML.dll
Para referenciar bibliotecas extras, nós teremos que especificar manualmente como fizemos a cima, usando o “-pkg:”, você pode pegar todas as bibliotecas do System, por exemplo: “-pkg:dotnet”
Para a sua surpresa, o Mono também compila e executa códigos que utilizam Windows Form, segue outro exemplo:
using System;
using System.Windows.Forms;
public class HelloWorld : Form
{
static public void Main ()
{
Application.Run (new HelloWorld ());
}
public HelloWorld ()
{
Text = "Mono Olá Mundo";
}
}
gmcs hello.cs -pkg:dotnet mono hello.exe
O Mono também tem uma IDE de desenvolvimento chamada MonoDevelop, muitíssimo interessante, e bastante fácil de utilizar:

Existe também o Mono para Web, é um módulo para o Apache chamado “Mod_mono”, para a o suporte ASP.NET em servidores Linux, mas isso vai além da nossa introdução, para mais acesse http://mono-project.com/Mod_mono
Dica
Para finalizar, você também pode ter um ambiente Linux já preparado e totalmente integrado com o Mono, seja para o Desenvolvimento, Worksatation ou Servidores (Mod_mono), utilize o Suse do qual é da Novell e o Projeto Mono também é da Novell, legal isso né?
Suse Linux Enterprise Server Mono Extension -> http://www.novell.com/products/mono/
Suse Linux Enterprise Desktop -> http://www.novell.com/products/desktop/
Links
http://mono-project.com/Main_Page -> Página Oficial do Projeto
http://mono-project.com/Start -> Página com uma coleção de informações para quem está começando
http://www.go-mono.com/docs/ -> Documentação de Bibliotecas do Mono
http://mono-project.com/Guide:_Porting_Winforms_Applications -> Guia de portabilidade de Projetos para o Mono
http://monodevelop.com/ -> Página da IDE MonoDevelop
Posts Relacionados
| Imprimir artigo | Este artigo foi escrito por Alexandre Santos em 23 23UTC julho 23UTC 2009 às 17:15, e está arquivado em .NET, Linux. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |

há 2 anos atrás
ÊÊ vou até instalar numa VM aki hehehe
[Reply]
há 2 anos atrás
Prezados amigos:
Tenho uma aplicação Dot.NET que estou desenvolvendo utilizando o C# como linguagem e o Apache + mod_mono como servidor Web. (Tudo isso no ambiente Linux – Ubuntu).
Recentemente tive que precisar utilizar uma solução (iTextSharp) que compilei e gerei uma DLL utilizando o MonoDevelop 2.0. O processo de compilação e geração da DLL foi perfeito. Entretanto, fora do ambiente IDE Monodevelop não sei como referenciar esta DLL, acessar seus métodos e etc… DLL esta que gerei, não sei onde colocá-la na estrutura de meu diretório (site); Tenho uma página que estou referenciando a DLL conforme abaixo:
using iTextSharp.text;
using iTextSharp.text.html;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;
E claro, a declaração não é reconhecida conforme o erro abaxo:
Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error.
Compiler Error Message: CS0246: The type or namespace name `iTextSharp’ could not be found. Are you missing a using directive or an assembly reference?
Já coloquei a DLL na raiz onde està a página inicial do site (diretório), já coloquei e registrei no diretório:
“/usr/lib/mono/gac/iTextSharp” executando o comando
sudo gacutil -i iTextSharp.dll
Já reiniciei o servidor Apache…. Nada e absolutamente nada acontece. Parece que a DLL não existe simplesmente.
Então, penso que de alguma forma terei ou deveria estar sendo referenciada dentro do arquivo “web.config” ou por meio de um “consumo de recursos” como num WebService. Não sei como resolver este problema.
Peço humildemente aos amigos que se alguém sabe de como resolver este meu problema que me ajuda. Fico desde já muito agradecido.
Meu muito obrigado à todos.
Grande abraço.
[Reply]
Alexandre Santos Reply:
setembro 13th, 2009 at 17:21
Já verificou a permissão do arquivo no servidor?
chmod 777 arquivo (se for necessário)
o de menos da uma lida nessa página
http://mono-project.com/Guide:_Porting_ASP.NET_Applications
E avise se conseguiu algo.
Abraços…
[Reply]