Monorepositorio con C#: organización de código para principiantes
En el desarrollo moderno con C# (.NET), tarde o temprano surge la pregunta: ¿cómo organizar el código cuando tienes varios proyectos — una biblioteca de clases, una API web, una aplicación de consola, pruebas? Muchos desarrolladores principiantes crean repositorios separados para cada parte, lo que genera confusión en las versiones y dependencias. La alternativa es el monorepositorio (monorepo). En este artículo, analizaremos qué es un monorepositorio, cómo configurarlo en C# y por qué simplifica la vida a los principiantes.
¿Qué es un monorepositorio?
Un monorepositorio es un enfoque en el que todo el código de varios proyectos relacionados se almacena en un único repositorio de Git. Por ejemplo, puede tener una biblioteca compartida MyApp.Shared, una aplicación web MyApp.Web y una herramienta de consola MyApp.Cli — todo en una misma carpeta, con un único archivo .sln.
En el contexto de C# (.NET), un monorepositorio generalmente significa una única solución de Visual Studio que contiene varios proyectos. Esto es especialmente útil para:
- Compartir código (mediante referencias a proyectos, no paquetes NuGet).
- Un proceso unificado de compilación y CI/CD.
- Simplificar el trabajo con versiones (una rama — todos los cambios a la vez).
Ventajas del monorepositorio para principiantes
Si recién estás empezando a aprender C#, un monorepositorio te ayudará a evitar errores típicos:
- Simplicidad de navegación — todos los proyectos en un solo lugar, sin necesidad de cambiar entre repositorios.
- Conexión instantánea — un cambio en la biblioteca se ve inmediatamente en los proyectos dependientes.
- Estilo unificado — se puede configurar un solo
.editorconfigoDirectory.Build.propspara todos los proyectos. - Ejecutar pruebas fácilmente — con un solo comando
dotnet testse verifica toda la solución.
Creación de la estructura del monorepositorio: guía paso a paso
Paso 1. Crear la carpeta raíz y la solución
Abra la terminal y ejecute:
mkdir MyMonorepocd MyMonorepodotnet new sln -n MyAppAhora tiene el archivo MyApp.sln — el punto de entrada para Visual Studio o Rider.
Paso 2. Agregar proyectos
Creemos tres proyectos: una biblioteca de clases, una API web y una aplicación de consola. Para mayor comodidad, los colocaremos en la subcarpeta src:
mkdir srccd srcdotnet new classlib -n MyApp.Shareddotnet new webapi -n MyApp.Webdotnet new console -n MyApp.Clicd ..Ahora los vinculamos a la solución:
dotnet sln add src/MyApp.Shared/MyApp.Shared.csprojdotnet sln add src/MyApp.Web/MyApp.Web.csprojdotnet sln add src/MyApp.Cli/MyApp.Cli.csprojPaso 3. Configurar dependencias entre proyectos
Supongamos que MyApp.Web y MyApp.Cli utilizan clases de MyApp.Shared. En lugar de publicar la biblioteca en NuGet, simplemente agregue una referencia de proyecto:
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.csprojAhora, en el archivo MyApp.Web.csproj aparecerá la sección:
<ItemGroup> <ProjectReference Include="..\\MyApp.Shared\\MyApp.Shared.csproj" /></ItemGroup>Paso 4. Escribir código compartido
En el proyecto MyApp.Shared crearemos una clase simple:
// src/MyApp.Shared/GreetingService.csnamespace MyApp.Shared;
public class GreetingService{ public string GetGreeting(string name) => $"¡Hola, {name}! Bienvenido al monorepositorio.";}Ahora la usamos en la aplicación de consola:
// src/MyApp.Cli/Program.csusing MyApp.Shared;