Biblioteca frente a aplicación en .csproj y versionado semántico
Comprenda las diferencias entre .csproj de una biblioteca y de una aplicación, cómo consume NuGet las bibliotecas y cómo el versionado semántico (MAJOR.MINOR.PATCH) guía las publicaciones.
Biblioteca frente a aplicación en .csproj y versionado semántico es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.
Conceptos y objetivos
Objetivo: Saber cuándo crear una biblioteca en lugar de una aplicación y cómo las versiones indican los cambios.
- .csproj de una biblioteca: se crea para ser referenciado y empaquetado para NuGet
- .csproj de una aplicación: produce un ejecutable para los usuarios finales
- Versionado semántico: MAJOR.MINOR.PATCH
Biblioteca frente a aplicación: vista rápida
- Biblioteca: tiene como destino varios frameworks para maximizar la reutilización; incluye metadatos (PackageId, Version, Authors).
- Aplicación: tiene un punto de entrada y publica una salida ejecutable.
- NuGet empaqueta las bibliotecas en archivos .nupkg; las aplicaciones normalmente se publican, no se empaquetan.
Demostración de la versión del ensamblado
Una biblioteca expone una versión; los consumidores la ven cuando hacen referencia al paquete.
using System;
using System.Reflection;
// Simple demo: read the assembly version at runtime.
// In a packed library, this reflects the version consumers see.
public class Program
{
public static void Main(string[] args)
{
Version v = Assembly.GetExecutingAssembly().GetName().Version;
Console.WriteLine("Assembly version: " + (v == null ? "unknown" : v.ToString()));
}
}
Comparación de SemVer (básica)
Comparar las versiones para decidir las actualizaciones: primero MAJOR, después MINOR y, por último, PATCH.
using System;
// Minimal SemVer (MAJOR.MINOR.PATCH) parsing and comparison.
// Ignores prerelease/build metadata for simplicity (good enough for beginners).
public class SemVer : IComparable<SemVer>
{
public int Major;
public int Minor;
public int Patch;
public static bool TryParse(string s, out SemVer v)
{
v = null;
if (string.IsNullOrEmpty(s)) return false;
string[] parts = s.Split('.');
if (parts.Length < 3) return false;
int a, b, c;
if (!int.TryParse(parts[0], out a)) return false;
if (!int.TryParse(parts[1], out b)) return false;
if (!int.TryParse(parts[2], out c)) return false;
v = new SemVer { Major = a, Minor = b, Patch = c };
return true;
}
public int CompareTo(SemVer other)
{
if (other == null) return 1;
if (Major != other.Major) return Major.CompareTo(other.Major);
if (Minor != other.Minor) return Minor.CompareTo(other.Minor);
return Patch.CompareTo(other.Patch);
}
public override string ToString()
{
return Major + "." + Minor + "." + Patch;
}
}
public class Program
{
public static void Main(string[] args)
{
SemVer a, b;
if (SemVer.TryParse("1.4.2", out a) && SemVer.TryParse("1.5.0", out b))
{
int cmp = a.CompareTo(b);
Console.WriteLine(a + " vs " + b + " -> " + (cmp < 0 ? "older" : (cmp > 0 ? "newer" : "equal")));
}
}
}
Reglas para aumentar la versión
Reglas para aumentar la versión:
- MAJOR: cambios incompatibles en la API
- MINOR: nuevas funcionalidades compatibles con versiones anteriores
- PATCH: correcciones de errores o tareas de mantenimiento sin cambios en la API
Consejo: comunicar los cambios en un registro breve de modificaciones.
Lista de comprobación previa al empaquetado
- Destinos de la biblioteca configurados (por ejemplo, netstandard)
- PackageId, Version y Authors cumplimentados
- Licencia y archivo readme incluidos
- API pública revisada para detectar cambios incompatibles
Regla de SemVer
Resumen
Resumen: Crear bibliotecas para reutilizarlas y empaquetarlas con NuGet; las aplicaciones son ejecutables. Usar MAJOR.MINOR.PATCH para comunicar los cambios de forma segura.
Aprende C# con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 93
- Lecciones
- 346
Preguntas frecuentes
¿La lección «Biblioteca frente a aplicación en .csproj y versionado semántico» es gratis?
Sí — el texto completo de «Biblioteca frente a aplicación en .csproj y versionado semántico» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Biblioteca frente a aplicación en .csproj y versionado semántico»?
Comprenda las diferencias entre .csproj de una biblioteca y de una aplicación, cómo consume NuGet las bibliotecas y cómo el versionado semántico (MAJOR.MINOR.PATCH) guía las publicaciones. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «Biblioteca frente a aplicación en .csproj y versionado semántico»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Biblioteca frente a aplicación en .csproj y versionado semántico
- Empaquetado y publicación en NuGet
- Multi-targeting