Monorepositório com C#: organização de código para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Monorepositório com C#: organização de código para iniciantes



No desenvolvimento moderno com C# (.NET), mais cedo ou mais tarde surge a pergunta: como organizar o código quando você tem vários projetos — uma biblioteca de classes, uma Web API, um aplicativo de console, testes? Muitos desenvolvedores iniciantes criam repositórios separados para cada parte, o que gera confusão com versões e dependências. A alternativa é o monorepositório (monorepo). Neste artigo, vamos explorar o que é um monorepositório, como configurá-lo em C# e por que ele simplifica a vida dos iniciantes.



O que é um monorepositório?



Um monorepositório é uma abordagem onde todo o código de vários projetos relacionados é armazenado em um único repositório Git. Por exemplo, você pode ter uma biblioteca compartilhada MyApp.Shared, um aplicativo web MyApp.Web e uma ferramenta de console MyApp.Cli — tudo em uma única pasta, com um único arquivo .sln.



No contexto do C# (.NET), um monorepositório geralmente significa uma única Solution do Visual Studio contendo vários projetos. Isso é especialmente útil para:

  • Compartilhamento de código (através de Project References, em vez de pacotes NuGet).
  • Um processo unificado de build e CI/CD.
  • Simplificação do gerenciamento de versões (um branch — todas as alterações de uma vez).


Vantagens do monorepositório para iniciantes



Se você está começando a aprender C#, o monorepositório ajuda a evitar erros comuns:

  • Simplicidade de navegação — todos os projetos em um só lugar, sem necessidade de alternar entre repositórios.
  • Conexão instantânea — uma alteração na biblioteca é imediatamente visível nos projetos dependentes.
  • Estilo unificado — você pode configurar um único .editorconfig ou Directory.Build.props para todos os projetos.
  • Facilidade para executar testes — com um único comando dotnet test, toda a solução é verificada.


Criando a estrutura do monorepositório: guia passo a passo



Passo 1. Criar a pasta raiz e a solução



Abra o terminal e execute:

mkdir MyMonorepocd MyMonorepodotnet new sln -n MyApp


Agora você tem o arquivo MyApp.sln — o ponto de entrada para o Visual Studio ou Rider.



Passo 2. Adicionar os projetos



Vamos criar três projetos: uma biblioteca de classes, uma Web API e um aplicativo de console. Para organização, vamos colocá-los em uma subpasta src:

mkdir srccd srcdotnet new classlib -n MyApp.Shareddotnet new webapi -n MyApp.Webdotnet new console -n MyApp.Clicd ..


Agora, vamos vinculá-los à solução:

dotnet sln add src/MyApp.Shared/MyApp.Shared.csprojdotnet sln add src/MyApp.Web/MyApp.Web.csprojdotnet sln add src/MyApp.Cli/MyApp.Cli.csproj


Passo 3. Configurar dependências entre projetos



Suponha que MyApp.Web e MyApp.Cli usem classes de MyApp.Shared. Em vez de publicar a biblioteca no NuGet, basta adicionar uma Project Reference:

dotnet add src/MyApp.Web/MyApp.Web.csproj reference src/MyApp.Shared/MyApp.Shared.csprojdotnet add src/MyApp.Cli/MyApp.Cli.csproj reference src/MyApp.Shared/MyApp.Shared.csproj


Agora, no arquivo MyApp.Web.csproj, aparecerá a seção:

<ItemGroup>  <ProjectReference Include="..\\MyApp.Shared\\MyApp.Shared.csproj" /></ItemGroup>


Passo 4. Escrever código compartilhado



No projeto MyApp.Shared, vamos criar uma classe simples:

// src/MyApp.Shared/GreetingService.csnamespace MyApp.Shared;

public class GreetingService{ public string GetGreeting(string name) => $"Olá, {name}! Bem-vindo ao monorepositório.";}


Agora, vamos usá-la no aplicativo de console:

// src/MyApp.Cli/Program.csusing MyApp.Shared;                

Blogs

Book Recommendations