Em novembro de 2014 a Microsoft surpreendeu a todos quando anunciou a publicação do código-fonte do .NET na tentativa de aproximar-se da comunidade open-source. E desde então, houveram diversas surpresas boas, como a reescrita total do ASP.NET, a chegada do VS Code e a promessa de portar o SQL Server no Linux.
Neste artigo, será apresentado os primeiros passos para criar uma aplicação do novo .NET (denominado .NET Core) dentro o Ubuntu. É importante avisar que a plataforma ainda está na segunda versão de Release Candidate e a versão final, pronta para produção, está esperada (não oficialmente) para final de 2017.
A primeira coisa a ser feita para quem é entusiasta em desenvolver com o C# do futuro é instalar o pacote dotnet correspondente ao seu sistema operacional. Na página oficial do .NET há a descrição detalhada para fazer isso no Windows e no MacOS, mas aqui está passo-a-passo para a instalação no Ubuntu 16.04:
Passo 1 – Adicione o repositório do .NET no aptitude
sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list' sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893 sudo apt-get update
Passo 2 – Instale a versão do .NET mais recente
sudo apt-get install dotnet-dev-1.0.0-preview3-003146
Passo 3 – Verifique se a instalação ocorreu bem executando o comando dotnet no terminal.
dotnet --version
Pronto! O dotnet foi instalado e está ansioso para trabalhar. 🙂
Quando tudo estiver OK, basta criar a nova pasta que armazenará o projeto e usar o scaffolding do dotnet para gerar os arquivos essenciais de configuração. Logo em seguida, deve-se executar um comando de restore para que as bibliotecas e dependências do projeto recém-criado sejam baixadas.
mkdir ~/ConsoleApplication1 cd ConsoleApplication1 dotnet new dotnet restore
Feito isso, a pasta da aplicação deve estar como mostra a figura abaixo.
O arquivo project.json é o arquivo central do projeto, pois especifica os detalhes da compilação do código-fonte, como a versão do projeto, framework de runtime, bibliotecas e dependências necessárias.
O outro arquivo na pasta é o Program.cs. Ele é uma espécie de “Hello, World” em C# e não tem nada de especial para quem já está familiarizado com a linguagem. Neste arquivo está declarada a função Main, cujo propósito é servir de ponto de entrada de aplicações em linha de comando.
Somente com esses arquivos já é possível rodar .NET no Ubuntu. Basta abrir o terminal, navegar para a pasta na qual o projeto está localizado e executar o run
dotnet run
A partir disso, a pasta do projeto é analisada em busca de alterações e a compilação ocorrerá. Quando o projeto compila corretamente, as pastas bin/Debug são criadas na raiz do diretório contendo a DLL gerada.
Essa forma de compilar é eficaz para atividades como depuração e testes. Entretanto, a DLL não fica otimizada para execução, pois é introduzido neste processo várias instruções de debug e tracing, que podem reduzir a performance e aumentar o consumo de memória.
Para compilar o código de forma otimizada, deve-se usar o processo de publicação feito pelo comando
dotnet publish
E se desejar, é permitido definir o runtime que a DLL suportará usando a opção -r na linha de comando
dotnet publish -r 1.0.0-preview3-003146
Depois de publicado, o projeto pode ser facilmente executado pelo terminal.
dotnet <caminho da DLL>
Este artigo introduziu os primeiros passos de desenvolvimento do .NET Core fora do Windows. Vale ressaltar que não se trata de uma nova versão do .NET, mas sim de um novo .NET, totalmente reescrito desde as bases da plataforma até os compiladores. Tudo isso está tornando o desenvolvimento de .NET no Linux uma experiência muito próxima ao que já existia no Windows, excetuando-se apenas pelas ferramentas e IDEs disponíveis. A boa notícia é que existe uma IDE fenomenal para desenvolver em C# no Linux, e ela será apresentada nos próximos posts.
http://zablo.net/blog/post/run-and-debug-asp-net-core-rc2-ubuntu-16-04
https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-net-core-rc2/