- O projeto utiliza .NET 8 e C# 13.
- Certifique-se de ter o .NET SDK 8 instalado (
dotnet --version). - (Opcional para Functions) Instale o Azure Functions Core Tools se desejar executar via
func. - Tenha acesso a uma instância do SQL Server (local ou remota) e uma connection string válida.
O repositório pode conter dois projetos que atuam como host da API.
O recomendado para execução local é o Ecommerce.AppHost (se existir) ou, alternativamente, o src/Ecommerce.Api.
A API lê a connection string do nome ConnectionStrings:sql.
Exemplo de appsettings.Development.json (ou variável de ambiente):
{
"ConnectionStrings": {
"sql": "Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"
}
}Você também pode definir a variável de ambiente:
-
Windows:
setx ConnectionStrings__sql "Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;" -
Linux/macOS:
export ConnectionStrings__sql="Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"
-
Restaurar e compilar:
dotnet build
-
Executar o host da API (usando
Ecommerce.AppHost):dotnet run --project src/Ecommerce.AppHost/Ecommerce.AppHost.csproj
-
Ou, caso não exista o AppHost, execute diretamente a API:
dotnet run --project src/Ecommerce.Api/Ecommerce.Api.csproj
- O projeto de infraestrutura (
Ecommerce.Infrastructure) possui um serviço hospedado que tenta executar as migrações automaticamente no startup (vejaRunMigrations()). - Caso prefira controlar as migrações manualmente, utilize o comando
dotnet efapontando para o projeto de infraestrutura como destino das migrations.
O projeto Functions utiliza o modelo Worker (isolated) e lê a connection string a partir da chave SqlConnectionString
(observe que é diferente do nome usado pela API).
Na pasta src/Ecommerce.Functions, crie um arquivo local.settings.json (não versionar) com o seguinte conteúdo de exemplo:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"SqlConnectionString": "Server=localhost;Database=EcommerceDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True;"
}
}Na raiz do repositório:
dotnet build-
Usando
dotnet run:dotnet run --project src/Ecommerce.Functions/Ecommerce.Functions.csproj
-
Ou com o Azure Functions Core Tools (recomendado para desenvolvimento local com host UI):
func start --project src/Ecommerce.Functions
- O projeto Functions está configurado com OpenAPI e middleware de tratamento global.
- Ao executar localmente com
func, o endpoint do Swagger/OpenAPI pode ser exposto conforme a configuração do projeto.
O projeto de infraestrutura contém o EcommerceDbContext e as migrations (se já geradas).
Para aplicar manualmente:
dotnet ef database update --project src/Ecommerce.Infrastructure --startup-project src/Ecommerce.AppHost/Ecommerce.AppHost.csprojAjuste o parâmetro --startup-project conforme o host utilizado localmente.
Para executar todos os testes do repositório:
dotnet test- A API (Controllers) espera a connection string em
ConnectionStrings:sql. - O Functions Worker espera a chave
SqlConnectionStringnolocal.settings.json(ou em variáveis de ambiente). Vejasrc/Ecommerce.Functions/Program.cs. - As Functions utilizam o cabeçalho
Accept-Languagee um serviço de internacionalização para mensagens de erro localizadas.
Se desejar, posso adicionar:
- Um exemplo de
local.settings.jsonpré-preenchido na pastaexamples/. - Um
docker-compose.ymlpara subir um SQL Server local para desenvolvimento.