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
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
- Biblioteca versus aplicativo em .csproj, versionamento semântico
- Empacotamento e publicação no NuGet
- Vários destinos