SDK, runtime e versionamento
ResumoO SDK é o kit para desenvolver (compilador + CLI + templates); o runtime é o mínimo para executar. Cada versão do .NET segue um calendário com faixas LTS e STS, e o
global.jsonfixa qual SDK um projeto usa.
1. Objetivos de Aprendizagem#
- Diferenciar SDK e runtime.
- Entender o esquema de versões (LTS vs STS) e cadência anual.
- Fixar a versão do SDK com
global.json.
2. Pré-requisitos#
- Ter o .NET SDK instalado (tópico 1.1).
3. Conceito#
- SDK (Software Development Kit): tudo que você precisa para desenvolver — o compilador C#, a
dotnetCLI, os templates de projeto e o próprio runtime. É o que você instala na sua máquina de desenvolvimento. - Runtime: o subconjunto necessário apenas para executar uma aplicação já compilada. É o que costuma ir para um servidor que só roda o app.
O porquê de separar: servidores de produção não precisam do SDK inteiro — instalar só o runtime reduz superfície e tamanho.
Versionamento: a Microsoft lança uma versão principal por ano, em novembro. As versões alternam entre:
- LTS (Long-Term Support): ~3 anos de suporte (ex.: .NET 8).
- STS (Standard-Term Support): ~18 meses (ex.: .NET 9).
Notaeste curso usa
net9.0. Todo o conteúdo é válido para .NET 9 ou superior.
4. Mão na Massa#
4.1. Setup#
Liste o que está instalado:
dotnet --list-sdks
dotnet --list-runtimes
4.2. Implementação Passo a Passo#
- Descubra a versão ativa do SDK:
dotnet --version
- Fixe a versão do SDK para um repositório criando um
global.jsonna raiz:
{
"sdk": {
"version": "9.0.100",
"rollForward": "latestFeature"
}
}
- O Target Framework Moniker (TFM) do projeto (
net9.0no.csproj) define qual runtime o app terá como alvo — é independente do SDK que compila.
4.3. Executando#
dotnet --version # respeita o global.json, se presente
5. Exemplo Completo#
Com global.json fixando 9.0.100 e rollForward: latestFeature, toda a equipe compila com um SDK compatível, evitando "na minha máquina funciona".
6. Boas Práticas e Armadilhas#
| Faça | Evite |
|---|---|
Usar global.json em repositórios de equipe | Depender do SDK "mais novo que estiver na máquina" |
| Escolher LTS para produção quando estabilidade é prioridade | Ficar em versões fora de suporte (sem patches de segurança) |
| Instalar só o runtime em servidores | Instalar o SDK completo em produção sem necessidade |
Atençãoo TFM (
net9.0) e a versão do SDK são coisas diferentes. Um SDK 9.x pode compilar projetos com alvonet8.0enet9.0.
7. Segurança e Produção#
- Versões fora de suporte não recebem correções de segurança. Planeje a atualização antes do fim do ciclo.
8. Exercícios#
- Fácil: liste seus SDKs e runtimes instalados.
- Médio: crie um
global.jsone confirme quedotnet --versiono respeita. - Desafio: pesquise a data de fim de suporte da versão que você usa.
9. Resumo#
SDK é para desenvolver, runtime é para executar. As versões alternam LTS/STS em cadência anual, e o global.json fixa o SDK do projeto — separado do TFM que define o alvo.
10. Próximos Passos#
A seguir: dominar a dotnet CLI.
11. Referências#
- Microsoft Learn — Versões e suporte do .NET
- Microsoft Learn — Visão geral do global.json
- Microsoft Learn — Target Frameworks (TFM)