C# Academy · Lección

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.

Lección 1 de 38 pasos

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

Comprobación rápida: ¿Qué cambio suele requerir aumentar la versión MAJOR según el versionado semántico?

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.

Gratis para empezar

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

  1. Biblioteca frente a aplicación en .csproj y versionado semántico
  2. Empaquetado y publicación en NuGet
  3. Multi-targeting
← Volver a C# Academy