Aplicações self-contained com o .NET Core

Algumas aplicações necessitam que as plataformas utilizadas sejam instaladas nas máquinas hosts. Exemplos disso são o Java Virtual Machine e o .NET Framework. Se você já programou para estas plataformas, sabe que a aplicação pode requerer que o .NET ou JVM estejam instalados para que ela rode.

Esse comportamento pode ser contornado criando-se uma aplicação self-contained. Aplicações self-contained, são as que já contêm o ambiente necessário para que ela seja executada.

Neste artigo veremos como criar uma aplicação self-contained com o .NET Core.

C# (C Sharp) - Introdução ao ASP.NET Core
Curso de C# (C Sharp) - Introdução ao ASP.NET Core
CONHEÇA O CURSO

Criando a aplicação

Para exemplificar uma aplicação self-contained, primeiro temos que criar uma aplicação de exemplo. Ela poderia ser qualquer um dos tipos de aplicações suportados pelo .NET Core, mas para este artigo vou criar uma aplicação MVC:

dotnet new mvc -n App

Na aplicação criada é importante aplicar o restore:

dotnet restore

Compilar:

dotnet build

E executar para ver se está tudo certo:

dotnet run

Com a aplicação funcionando, podemos criar uma versão self-contained dela.

Criando uma aplicação self-contained

Para se definir que uma aplicação é self-contained é necessário fazer apenas uma pequena modificação nela. No arquivo .csproj, é necessário adicionar no elemento <PropertyGroup> a plataforma alvo. Por exemplo:

<PropertyGroup>
  <TargetFramework>netcoreapp1.1</TargetFramework>
  <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
</PropertyGroup>

Acima é definido que a plataforma alvo da aplicação é o ambiente Windows 10 de 64bits. Após isso, é necessário aplicar o restore na aplicação:

dotnet restore

E informar esta plataforma na hora da publicação dela:

dotnet publish -c release -r win10-x64

Com isso, será gerado um arquivo .exe:

Que ao ser executado, irá iniciar a aplicação:

Caso queria definir outros ambientes para a aplicação, eles podem ser informados à tag <RuntimeIdentifiers> separados por ponto e vírgula:

<PropertyGroup>
  <TargetFramework>netcoreapp1.1</TargetFramework>
  <RuntimeIdentifiers>win10-x64;osx.10.12-x64;ubuntu.17.04-x64</RuntimeIdentifiers>
</PropertyGroup>

E depois de aplicar o restore:

dotnet restore

Basta informar para qual plataforma a aplicação deve ser gerada:

Mac OS X:

dotnet publish -c release -r osx.10.12-x64

Ubuntu:

dotnet publish -c release -r ubuntu.17.04-x644

Só é importante ficar atento se a plataforma alvo é suportada pelo .NET Core, caso contrário não vai funcionar.

C# (C Sharp) - TDD
Curso de C# (C Sharp) - TDD
CONHEÇA O CURSO
Deixe seu comentário

Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo.