Olá pessoal, tudo bem?

No post de hoje vou falar um pouco sobre o lançamento do .NET Core, principalmente o CLI, apresentando algumas características e opiniões.

.NET Core

Na segunda-feira, dia 27/06/2016, foi anunciada a versão RTM da nova plataforma de desenvolvimento da Microsoft (e da comunidade), o .NET Core. E por mais estranho que possa ser,  o anuncio ocorreu no evento Red Hat Summit, da Red Hat.

Mas então? O que há de novo no .Net Core?

Bom, alguns dos principais fatores é que a estrutura das aplicações é totalmente diferente, muito mais leve e flexível. A plataforma não depende mais do MSBuild, e nem dos arquivos de solução (.sln) e projeto (.csproj). As informações de compilação, runtime, dependências, e afins são armazenadas em um arquivo chamado project.json. Fazendo uma analogia, a estrutura é muito similar a uma aplicação desenvolvida em NodeJS.

Eu particularmente gostei muito da nova plataforma, achei muito mais prática, possibilitando o desenvolvimento em outras IDE’s com facilidade, inclusive no bloco de notas :-D. Tudo bem que já era possível antes, mas compilar um programa C# diretamente da linha de comando utilizando o csc.exe era bem mais complexo do que o .NET Core. Por questões de compatibilidade, nas próximas versões a Microsoft planeja reformular novamente a estrutura, voltando a um modelo similar ao anterior, trazendo de volta o arquivo csproj.

Outros pontos importantes são que o .NetCore é totalmente open source (mantido pela Microsoft), atualmente, permite o desenvolvimento apenas em C# e é portável para diversos sistemas operacionais: Windows, algumas distribuições do Linux e Mac OS.

.NET Core CLI

Na instalação do .Net Core, está incluso o .NET Core CLI (Command Line Interface), que é uma ferramenta que possibilita criar, restaurar pacotes, compilar, executar e publicar as aplicações diretamente via linha de comando. Para criar uma aplicação utilizando o CLI basta executar:

dotnet new

para criar a aplicação. A estrutura inicial será:

Captura de tela de 2016-07-05 23-43-23

Ubuntu 16.04

 

É criado o arquivo project.json e uma classe Program.cs que apenas mostra o famoso “Hello World!” no console.

dotnet restore

Em seguida, é necessário executar o restore. Este comando irá identificar as dependências exatas da aplicação e gerar o arquivo project.lock.json para possibilitar a compilação e execução.

dotnet build ou  dotnet run

Por último, é possível apenas compilar a aplicação ou compilar e executar. Executando o comando run, além de executar é efetuada a compilação também.

Captura de tela de 2016-07-07 20-38-26

Executando no Ubuntu 16.04

 

Tipos de aplicações .NET Core

Atualmente é possível criar dois tipos de aplicação utilizando o .NET Core:

  • Portable Applications: Aplicações portáveis, são aplicações que necessitam do .NET Core instalado no host que irá executá-las. Como a runtime está instalada, na aplicação vão apenas os binários da mesma, e as dependências que não fazem parte do .NET. Isso faz com que ela possa ser executada em qualquer plataforma que possua o .NET Core instalado. Este é o tipo padrão de aplicação.

Captura de tela de 2016-07-07 22-45-33

Para configurar uma aplicação como portable, o tipo dentro do metapacote Microsoft.NETCore.App (que é a indicação de que está sendo usado o .NET Core) deve ser informado como Platform. Ao executar a publicação com o comando:

dotnet publish

Não serão copiados os assemblies do framework, visto que eles estarão instalados no host.

Captura de tela de 2016-07-07 22-57-52

 

  • Self-Contained Applications: Diferentemente das aplicações portáveis, este tipo de aplicação inclui irá publicar todas as dependências, inclusive a runtime. Isto faz com que ela não tenha nenhuma dependência do host. Como efeito colateral, uma mesma compilação não pode ser utilizada em plataformas distintas, mas pode ser compilada contra diversas runtimes para atender cada plataforma.

Para configurar este tipo de aplicação, basta remover o type do pacote Microsoft.NETCore.App, e incluir os ids  das runtimes (RID) às quais a aplicação estará disponível no arquivo project.json.

Captura de tela de 2016-07-07 23-48-44

 

Com está configuração, quando executado o comando dotnet restore , serão baixadas também as runtimes configuradas. E quando executado o comando dotnet publish, será publicada a aplicação com a runtime relativa ao SO em que ela foi publicada. Para efetuar a publicação com uma runtime diferente é necessário informar o argumento --runtime [RID] durante a publicação.

Captura de tela de 2016-07-07 23-56-21

Conclusão

Por hoje é só pessoal. Estou gostando muito de brincar com o .NET Core, e acho que ele vai dar uma nova vida a plataforma .NET como um todo, principalmente pela portabilidade que permite o desenvolvimento de aplicações em outros sistemas operacionais (sem gambiarras hehehe).

Grande abraço a todos!