dotnet publish | .NET 10, CSharp 14 | CSharp
- dotnet publish | .NET 10, CSharp 14 | CSharp
📦 .NET 10 — Containerização Nativa (Native Container Publishing)
O .NET 10 introduz suporte nativo à publicação de containers, permitindo criar, taguear e publicar imagens diretamente pela CLI do .NET, sem necessidade de:
- Dockerfile
- Docker CLI
- Build manual de imagens
Tudo é feito via MSBuild, de forma repetível e amigável para CI/CD.
🎯 O que mudou?
Antes:
- Era obrigatório escrever um
Dockerfile - Dependência direta do Docker
- Builds mais difíceis de padronizar
Agora:
- O próprio
dotnet publishgera a imagem - Build determinístico via MSBuild
- Push direto para registries
🧠 Como funciona
O .NET usa targets de MSBuild para:
- Compilar a aplicação
- Criar a imagem de container
- Aplicar tags
- (Opcional) Publicar no registry
Tudo isso acontece com um único comando.
▶️ Comando mais simples
dotnet publish \
--os linux \
--arch x64 \
/t:PublishContainer
📌 Resultado:
- A aplicação é compilada
- Uma imagem de container é criada localmente
🏷️ Publicando com nome e registry
dotnet publish -r linux-x64 \
/p:PublishProfile=DefaultContainer \
/p:ContainerImageName=myapp \
/p:ContainerRegistry=myregistry.azurecr.io
Isso gera e publica automaticamente a imagem em:
myregistry.azurecr.io/myapp:latest
⚙️ Configuração via .csproj
Você pode configurar tudo diretamente no projeto:
<PropertyGroup>
<PublishProfile>DefaultContainer</PublishProfile>
<ContainerImageName>myapp</ContainerImageName>
<ContainerRegistry>myregistry.azurecr.io</ContainerRegistry>
<ContainerImageTag>v1.0.0</ContainerImageTag>
</PropertyGroup>
Depois, basta rodar:
dotnet publish -r linux-x64