Pular para o conteúdo

Seu primeiro backend

Pré-requisitos: Git e .NET SDK 10. Os exemplos de shell usam Bash. O feed público ainda não está definido; use os pacotes do checkout.

Na raiz do repositório:

Janela do terminal
dotnet build Sil.Builder.slnx -c Release
for p in Sil.Builder.Sdk Sil.Builder.Analyzers Sil.Builder.Generators Sil.Builder.Runtime Sil.Builder.Runtime.Data Sil.Builder.Testing dotnet-builder Sil.Builder.Mcp; do
dotnet pack "src/$p/$p.csproj" --no-build -c Release -o artifacts
done
Janela do terminal
BUILDER_REPO="$PWD"
BUILDER_FEED="$BUILDER_REPO/artifacts"
mkdir -p ../builder-demo
cd ../builder-demo
dotnet "$BUILDER_REPO/src/dotnet-builder/bin/Release/net10.0/dotnet-builder.dll" new satellite Yard
cd Yard
# Cache isolado: builds locais podem usar a mesma versão de pacote.
export NUGET_PACKAGES="$(mktemp -d)"
dotnet nuget add source "$BUILDER_FEED" --name builder-local --configfile NuGet.Config
dotnet restore
dotnet tool restore --add-source "$BUILDER_FEED"
dotnet build --no-restore
dotnet builder inspect

O template usa Dock como placeholder e o renomeia para Yard neste exemplo: módulo, entidade e id da spec acompanham o nome. Ele já traz cinco projetos por módulo, testes, spec, configuração e governança. A fonte local fica no NuGet.Config do consumidor para os restores seguintes; ajuste o caminho em outra máquina. A versão da ferramenta deve acompanhar SilBuilderVersion.

Para um satélite que consome o SDK Mono, informe uma versão publicada em new satellite Yard --sdkmono-version <versão> e acrescente o feed do pacote ao NuGet. No CI do backend, defina SIL_SDKMONO_FEED. A dependência é adicionada ao host e às cinco camadas do módulo; o uso de AddSilMono e dos Contracts do Core depende da API real dessa versão.

O host já habilita SilGenerateProgram: o SDK gera Main, registros dos módulos e pipeline HTTP no build. O Program.cs do template contém somente hooks opcionais do consumidor; o projeto também compila sem esse arquivo. Ao executar new module, os novos registros vêm das referências do projeto. Veja como ativar em um projeto existente.

Janela do terminal
dotnet builder spec lint
dotnet builder spec plan features/yard/2026-10-03-yard-docas
dotnet builder check --static

Para criar outra feature, use new feature, complete o bloco builder: e siga lint → plan → apply → check. new entity cria somente a entidade-base; uma fatia completa vem da spec.

Janela do terminal
dotnet builder spec sync features/yard/2026-10-03-yard-docas
dotnet builder check --ci

check --ci pode retornar incomplete por dependências pendentes. Inspecione os diagnósticos; não transforme exit 2 em aprovação. Para rodar o host de um produto, configure conexão PostgreSQL, autenticação confiável e autorização conforme o runtime.

A validação completa de pacotes e consumidores do próprio builder é python3 eng/build/verify_delivery.py --configuration Release na raiz do checkout.