> For the complete documentation index, see [llms.txt](https://docs.skail.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.skail.dev/construir/sdk-.net.md).

# SDK .NET

Referência do SDK: pacotes, configuração do host, atributos, tipos, primitivas de espera, exceções e regras do analyzer. Exaustiva e seca; o conceito por trás de cada item está em Aprender.

* [Pacotes](/construir/sdk-.net/pacotes.md). Os pacotes NuGet do SDK .NET do skail: o que cada um contém, qual é obrigatório e como referenciá-los no `.csproj`.
* [Configuração do host](/construir/sdk-.net/configuracao-do-host.md). O que precisa existir no `Program.cs` para o runtime descobrir e executar suas functions: o atributo de assembly e a registração no host. Mais como a injeção de dependência funciona nas classes skail.
* [\[SkailFunction\]](/construir/sdk-.net/skailfunction.md). Marca um método como orquestrador durável. O método vira um ponto de entrada de execução: o skail inicia, retoma e acompanha o fluxo a partir dele. Esta é a referência do atributo; o conceito está em [Modelo de programação](/aprender/fundamentos/modelo-de-programacao.md).
* [\[SkailCommand\]](/construir/sdk-.net/skailcommand.md). Marca um método como a unidade de I/O do fluxo: executa, tem argumentos e resultado registrados no histórico da execução, e não executa de novo naquela execução depois de concluir. É onde mora tudo que a function não pode fazer: I/O, relógio, aleatoriedade.
* [SkailTask e SkailTask\<T>](/construir/sdk-.net/skailtask-e-skailtask-less-than-t-greater-than.md). O tipo de retorno de todo método decorado. Comporta-se como `Task`/`Task<T>` para quem escreve o código e, por baixo, permite ao runtime interceptar cada `await` para consultar e gravar o histórico da execução.
* [Delay](/construir/sdk-.net/delay.md). Espera durável por um intervalo de tempo. A execução hiberna sem ocupar thread nem processo e é retomada quando o prazo vence, mesmo que a aplicação tenha sido reiniciada no meio.
* [WhenAll e WhenAny](/construir/sdk-.net/whenall-e-whenany.md). Composição de várias `SkailTask` dentro de uma function: `WhenAll` espera todas concluírem, `WhenAny` devolve a primeira que concluir. São as versões duráveis de `Task.WhenAll` e `Task.WhenAny`, que não podem ser usadas em functions.
* [WaitForEvent](/construir/sdk-.net/waitforevent.md). Hiberna a execução até que um evento externo com o mesmo nome e o mesmo instance id seja disparado pela API HTTP. Esta é a referência da primitiva; o conceito está em [Eventos externos e correlação](/aprender/fundamentos/eventos-externos-e-correlacao.md) e o guia em [Como disparar um evento pela API HTTP](/construir/escrever-fluxos/como-disparar-um-evento-pela-api-http.md).
* [Exceções](/construir/sdk-.net/excecoes.md). As exceções que o SDK pode lançar no seu código, quando acontecem e o que fazer com cada uma. Mais o mapeamento entre os códigos HTTP do skail e os `StatusCode` que aparecem em `SkailException`.
* [Regras do analyzer: SKAIL001, SKAIL002, SKAIL003](/construir/sdk-.net/regras-do-analyzer-skail001-skail002-skail003.md). O pacote `Skail.Platform.Analyzer` roda na compilação e bloqueia as assinaturas que o runtime não consegue executar. Três regras, cada uma com causa, exemplo que dispara, correção e política de supressão.
