Automatizando tarefas de um projeto C# com o Cake \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 18 Horas 

 57 Min 

 14 Seg 

   Tempo restante da oferta: 18 57 14 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Automatizando tarefas de um projeto C# com o Cake  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

# Automatizando tarefas de um projeto C# com o Cake

 Veja como o Cake pode auxiliar na automação de tarefas de um projeto .NET Core.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 9 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/09/automatizando-tarefas-de-um-projeto-csharp-com-o-cake.png)  

O desenvolvimento de uma aplicação pode ser um processo repetitivo: compilação, teste e execução/publicação. Vendo apenas esses pontos, o processo pode ser algo simples, mas ao longo do desenvolvimento, toda esta repetição pode ter consumido horas.

Quando nos deparamos com uma situação assim, chegou o momento de procuramos formas de automatizar este processo e economizarmos um esforço não útil para a aplicação.

[  ![C# (C Sharp) Básico](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Básico Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-basico)

Hoje em dia existem várias soluções de automação para essas tarefas repetitivas de um projeto. Neste artigo conheceremos o Cake.

## Cake

O Cake (C# Make) é um sistema de automação, multiplataforma e open source, que permite definir das tarefas em C#, se tornando assim o sistema de automação ideal para o desenvolvedor desta linguagem.

### Aliases e Extensibilidade

Como é voltado para aplicações da plataforma .NET, o Cake já define uma série de métodos que representam ações em aplicações desta plataforma. Por exemplo, para aplicar o restore em um projeto .NET Core, pode ser definido a tarefa abaixo:

```csharp
Task("Restore")
   .Does(() =>
    {
        DotNetCoreRestore("./ExemploCake.csproj");
    });

```

O método `DotNetCoreRestore` usado acima é chamado de “alias”, e faz parte dos alises de [DotNetCore](https://cakebuild.net/dsl/dotnetcore/). Existem aliases para uma infinidade de tarefas, e você pode ver todos na [documentação](https://cakebuild.net/dsl/) do Cake.

Caso não exista um alias nativo para a ação que queira executar, a plataforma também suporta os chamados [Addins](https://cakebuild.net/addins/), que são métodos de extensão criados pela comunidade.

Se mesmo assim não encontrar um método para a sua tarefa, você pode criar [seu próprio alias](https://cakebuild.net/docs/fundamentals/aliases), que nada mais é que um método de extensão do C#. E se fizer isso, contribua com a comunidade disponibilizando ele no NuGet.

Agora que conhecemos o Cake, vamos ver um exemplo rápido do seu uso.

## Colocando a mão na massa

Para este artigo vou testar o Cake uma aplicação console simples:

```shell
dotnet new console -n ExemploCake
cd ExemploCake

```

Nela o Cake pode ser adicionado com o comando do PowerShell abaixo, caso esteja no Windows:

```shell
Invoke-WebRequest https://cakebuild.net/download/bootstrapper/windows -OutFile build.ps1

```

Ou o comando de terminal abaixo, caso esteja no Linux:

```shell
curl -Lsfo build.sh https://cakebuild.net/download/bootstrapper/linux

```

Ou caso esteja no Mac OS X:

```shell
curl -Lsfo build.sh https://cakebuild.net/download/bootstrapper/osx

```

Com isso, será adicionado um arquivo **build.ps1** no Windows e **build.sh** nos ambientes Unix. Será este arquivo que executaremos quando as tarefas estiverem automatizadas.

[  ![C# (C Sharp) Intermediário](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Intermediário Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-intermediario)

### Criando um script Cake

Com o Cake adicionado na aplicação, crie nela um arquivo chamado **build.cake**. Será neste arquivo que as tarefas devem ser adicionadas. Por exemplo:

```csharp
var target = Argument("target", "Default");

Task("Default")
  .Does(() =>
{
  Information("Hello World!");
});

RunTarget(target);

```

A tarefa acima é simples, como é possível supor, ela apenas exibe o famoso `"Hello World"` no console/terminal quando o Cake for executado:

**Windows**

```
.uild.ps1

```

**Linux / Mac OS X**

```
# Agusta a permissão
chmod +x build.sh

# Executa o arquivo.
./build.sh

```

![](https://d2m498l008ebpa.cloudfront.net/2017/09/Screen-Shot-2017-09-19-at-14.56.45.png)

No código, a primeira linha:

```csharp
var target = Argument("target", "Default");

```

Define a tarefa padrão, caso alguma não seja definida durante a execução, que pode ser feito da seguinte forma:

```shell
./build.sh -target Default

```

Por ser código C#, podemos definir elementos que são válidos nesta linguagem com uma variável:

```csharp
var target = Argument("target", "Default");

var projectFile = "./ExemploCake.csproj";

Task("Default")
  .IsDependentOn("Restore-Application")
  .Does(() =>
{
  Information("Hello World!");
});

Task("Restore-Application")
  .Does(() =>
{
  DotNetCoreRestore(projectFile);
});

RunTarget(target);

```

Além de definirmos uma variável:

```csharp
var projectFile = "./ExemploCake.csproj";

```

Também foi definido que antes de executar a tarefa “`Default`”:

```csharp
Task("Default")
  .IsDependentOn("Restore-Application")
  .Does(() =>
{
  Information("Hello World!");
});

```

Deve ser executa a tarefa “`Restore-Application`”, que aplica o restore na aplicação:

```csharp
Task("Restore-Application")
  .Does(() =>
{
  DotNetCoreRestore(projectFile);
});

```

Pode-se cascatear uma tarefa após a outra, quantas verses for necessário:

```csharp
var target = Argument("target", "Default");

var projectFile = "./ExemploCake.csproj";

Task("Default")
  .IsDependentOn("Run-Application")
  .Does(() =>
{
  Information("Hello World!");
});

Task("Restore-Application")
  .Does(() =>
{
  DotNetCoreRestore(projectFile);
});

Task("Run-Application")
  .IsDependentOn("Restore-Application")
  .Does(() =>
{
  DotNetCoreRun(projectFile);
});

RunTarget(target);

```

## Conclusão

Agora que a configuração do Cake está definida e que já temos uma estrutura básica, ele pode ser expandido com adição de novas tarefas, como aplicação de teste e ou commit dos códigos alterados.

[  ![C# (C Sharp) Avançado](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Avançado Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-avancado)

Caso tenha gostado da ferramenta, você pode ver mais funcionalidades dela na sua ótima [documentação](https://cakebuild.net/docs/).

- [ #C ](https://www.treinaweb.com.br/blog/tag/c)
- [ #.NET Core ](https://www.treinaweb.com.br/blog/tag/net-core)
- [ #Cake ](https://www.treinaweb.com.br/blog/tag/cake)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

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

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/08/07161700/gerenciamento-python-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     4 anos atrás

    ##  [ Empacotando e publicando pacotes Python no PyPi ](https://www.treinaweb.com.br/blog/empacotando-e-publicando-pacotes-python-no-pypi) 

     Neste artigo iremos aprender como funciona o processo de empacotar e distribuir nossos próprios pacotes Python no PyPi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/introducao-ao-maven-aprenda-como-criar-e-gerenciar-projetos-java-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Introdução ao Maven, aprenda como criar e gerenciar projetos Java ](https://www.treinaweb.com.br/blog/introducao-ao-maven-aprenda-como-criar-e-gerenciar-projetos-java) 

     Neste artigo veremos como instalar o Maven e como podemos utilizá-lo para nos auxiliar na criação e no gerenciamento de dependência de um projeto Java.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/spring-framework-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Trabalhando com Scheduled Tasks no Spring Boot ](https://www.treinaweb.com.br/blog/trabalhando-com-scheduled-tasks-no-spring-boot) 

     Descubra o poder das Scheduled Tasks no Spring Boot. Aprenda a criar, configurar e aprimorar tarefas agendadas em Java com o Spring Framework.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/29063746/0-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     7 anos atrás

    ##  [ Como funciona uma empresa de desenvolvimento de software? ](https://www.treinaweb.com.br/blog/como-funciona-uma-empresa-de-desenvolvimento-de-software) 

     Veja de forma resumida como é trabalhar em uma empresa de desenvolvimento de software.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/04/23151556/MÓDULOS-NPM-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     8 anos atrás

    ##  [ Criando módulos globais do NPM ](https://www.treinaweb.com.br/blog/criando-modulos-globais-do-npm) 

     Aprenda a fazer seus próprios módulos globais do NPM e crie ferramentas executadas diretamente do terminal em apenas 5 passos!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Cron jobs, timeouts e intervals com NestJS ](https://www.treinaweb.com.br/blog/cron-jobs-timeouts-e-intervals-com-nestjs) 

     Neste artigo vamos utilizar o módulo nativo scheduler do NestJS para trabalhar com tarefas automatizadas com cron jobs, timeouts e intervals

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/05/11154235/diferencas-cursos-superiores-TI-400x280.jpg)  [ Estudos ](https://www.treinaweb.com.br/blog/categoria/estudos) 

     9 anos atrás

    ##  [ Diferenças entre os cursos superiores na área de TI ](https://www.treinaweb.com.br/blog/diferencas-entre-os-cursos-superiores-na-area-de-ti) 

     Existem diversos cursos de graduação na área de TI. Você sabe qual é foco de cada um deles?

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/04/04204421/capa-alm--400x280.png)  [ Governança ](https://www.treinaweb.com.br/blog/categoria/governanca) 

     8 anos atrás

    ##  [ Você sabe o que é ALM? ](https://www.treinaweb.com.br/blog/voce-sabe-o-que-e-alm) 

     Veja neste artigo o que vem a ser o ALM (Application Lifecycle Management).

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/09/12180648/dev-ops-400x280.png)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     8 anos atrás

    ##  [ Afinal, o que é DevOps? ](https://www.treinaweb.com.br/blog/afinal-o-que-e-devops) 

     Você sabe o que é DevOps? Confira neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/03163125/SYMFONY-FLEX-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ O que é o Symfony Flex e como ele funciona ](https://www.treinaweb.com.br/blog/o-que-e-o-symfony-flex-e-como-ele-funciona) 

     Nesse post falaremos sobre os principais conceitos do Symfony Flex. Veremos desde o início como ele funciona, qual seu papel na criação da estrutura do Symfony e como ele pode nos ajudar no processo de gerenciamento de dependências do projeto.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/04112944/DJANGO-PROJETOS-PYCHARM-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Como criar comandos customizados no Django ](https://www.treinaweb.com.br/blog/como-criar-comandos-customizados-no-django) 

     Aprenda a criar comandos customizados no Django para automatizar tarefas, personalizar funcionalidades e integrar sistemas externos!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/o_que_e_drupal-400x280.png)  [ Drupal ](https://www.treinaweb.com.br/blog/categoria/drupal) 

     6 anos atrás

    ##  [ O que é Drupal? ](https://www.treinaweb.com.br/blog/o-que-e-drupal) 

     Veja neste artigo o que é o Drupal.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **18h 57min 14s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
