0Pricing
C# Academy · Aula

Biblioteca versus aplicativo em .csproj, versionamento semântico

Entenda biblioteca versus aplicativo em .csproj, como o NuGet consome bibliotecas e como o versionamento semântico (MAJOR.MINOR.PATCH) orienta os lançamentos.

Biblioteca versus aplicativo em .csproj, versionamento semântico é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 3 aulas no total.

Conceitos e objetivos

Objetivo: Saber quando criar uma biblioteca em vez de um aplicativo e como as versões indicam mudanças.

  • Biblioteca .csproj: criada para ser referenciada e empacotada para o NuGet
  • Aplicativo .csproj: produz um executável para os usuários finais
  • Versionamento semântico: MAJOR.MINOR.PATCH

Biblioteca versus aplicativo: visão rápida

  • Biblioteca: tem como alvo estruturas para maximizar a reutilização; contém metadados (PackageId, Version, Authors).
  • Aplicativo: tem um ponto de entrada; publica uma saída executável.
  • O NuGet empacota bibliotecas em arquivos .nupkg; os aplicativos normalmente são publicados, não empacotados.

Demonstração da versão do assembly

Uma biblioteca expõe uma versão; os consumidores a veem quando referenciam o pacote.

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()));
  }
}

Comparação básica de SemVer

Compare as versões para decidir sobre atualizações: primeiro MAJOR, depois MINOR e, por fim, 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")));
    }
  }
}

Regras para aumentar a versão

Regras de aumento:

  • MAJOR: alterações incompatíveis na API
  • MINOR: novos recursos compatíveis com versões anteriores
  • PATCH: correções de erros ou tarefas de manutenção, sem alteração na API

Dica: comunique as alterações em um registro curto de mudanças.

Lista de verificação antes de empacotar

  • Destinos da biblioteca definidos (por exemplo, netstandard)
  • PackageId, Version e Authors preenchidos
  • Licença e README incluídos
  • API pública revisada quanto a alterações incompatíveis

Regra do SemVer

Verificação rápida: Qual alteração normalmente exige aumentar a versão MAJOR segundo o versionamento semântico?

Resumo

Resumo: Crie bibliotecas para reutilização e empacotamento no NuGet; os aplicativos são executáveis. Use MAJOR.MINOR.PATCH para comunicar alterações com segurança.

Perguntas Frequentes

A aula “Biblioteca versus aplicativo em .csproj, versionamento semântico” é grátis?

Sim — o texto completo de “Biblioteca versus aplicativo em .csproj, versionamento semântico” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 3 aulas no total.

O que vou aprender em “Biblioteca versus aplicativo em .csproj, versionamento semântico”?

Entenda biblioteca versus aplicativo em .csproj, como o NuGet consome bibliotecas e como o versionamento semântico (MAJOR.MINOR.PATCH) orienta os lançamentos. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 3.

Quanto tempo leva a aula “Biblioteca versus aplicativo em .csproj, versionamento semântico”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Biblioteca versus aplicativo em .csproj, versionamento semântico
  2. Empacotamento e publicação no NuGet
  3. Vários destinos
← Voltar para C# Academy