- Desenvolvimento, por onde começar
- Execução do projeto
- Estrutura
- Dependências
- Build e testes
- NuGet privado
- CI/CD
- README
Passos para execução do projeto:
-
Abrir Prompt de Comando de sua preferência (CMD ou PowerShell);
-
Criar pasta para o projeto no local desejado;
-
Executar os seguintes comandos;
dotnet new -i Wiz.Dotnet.Template.API
dotnet new wizapi -n [NomeProjeto]
- Executar comando para configurar aplicação em modo (HTTPS);
dotnet dev-certs https --trust
- Incluir configurações de varíaveis de ambiente no caminho abaixo:
├── Wiz.[NomeProjeto] (solução)
├── Wiz.[NomeProjeto].API (projeto)
├── appsettings.{ENVIRONMENT}.json
├── src (pasta física)
├── Wiz.[NomeProjeto].API (projeto)
├── appsettings.{ENVIRONMENT}.json
Dentro do arquivo local.settings.json, há o conteúdo para modificação das variáveis:
{
"ApplicationInsights": {
"InstrumentationKey": "KEY_APPLICATION_INSIGHTS"
},
"ConnectionStrings": {
"CustomerDB": "CONNECTION_DATABASE"
},
"TokenValidationParameters": {
"ValidAudience": "URL_SSO"
},
"API": {
"ViaCEP": "https://viacep.com.br/ws/"
},
"HealthChecks-UI": {
"HealthChecks": [
{
"Name": "Customer DB Health",
"Uri": "https://localhost:5001/health"
}
],
"Webhooks": [],
"EvaluationTimeOnSeconds": 30,
"MinimumSecondsBetweenFailureNotifications": 60
}
}
}
- (Opcional) Inserir chave do Application Insights conforme configurado no Azure no arquivo appsettings.{ENVIRONMENT}.json.
Caso não há chave de configuração no Azure, não é necessário inserir para executar o projeto local.
- Executar projeto via Kestrel;
Executar o projeto via Kestrel facilita a troca de ambientes (environments) e a verificação de logs em execução da aplicação em projetos .NET Core. Os ambientes podem ser configurados dentro das propriedades do projeto, conforme caminho abaixo:
├── Wiz.[NomeProjeto] (solução)
├── Wiz.[NomeProjeto].API (projeto)
├── Properties (pasta física)
├── launchSettings.json
Dentro do arquivo launchSettings.json, há o conteúdo que indica a configuração de ambiente via Kestrel:
"Wiz.[NomeProjeto].API": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
- (Recomendado) Instalar extensões para desenvolvimento:
- ASP.NET core VS Code Extension Pack
- Azure Functions
- GitLens — Git supercharged
- NuGet Package Manager
- vscode-icons
- (Recomendado) Instalar extensões para testes:
- Executar projeto via Kestrel (Tecla F5);
Por padrão, todo projeto executado no Visual Studio Code é executado via Kestrel (Tecla F5). Os ambientes podem ser configurados dentro das propriedades do projeto, conforme caminho abaixo:
├── .vscode (pasta física)
├── launch.json
- Utilizar a função task para executar ações dentro do projeto. A função está presente no caminho do menu abaixo:
Terminal -> Run Task
- Selecionar a função task a ser executada no projeto:
- clean - Limpar solução
- restore - Restaurar pacotes da solução
- build - Compilar pacotes da solução
- test - Executar projeto de testes
- test with coverage - Executar projeto de testes com cobertura
Padrão das camadas do projeto:
- Wiz.[NomeProjeto].Domain: domínio da aplicação, responsável de manter as regras de negócio para a API;
- Wiz.[NomeProjeto].Infra: camada mais baixa, para acesso a dados, infraestrutura e serviços externos;
- Wiz.[NomeProjeto].API: responsável pela camada de disponibilização dos endpoints da API;
- Wiz.[NomeProjeto].Tests: responsável pela camada de testes unitários e de integração dos projetos.
Formatação do projeto dentro do repositório:
├── src
├── Wiz.[NomeProjeto].Domain (projeto)
├── Wiz.[NomeProjeto].Infra (projeto)
├── Wiz.[NomeProjeto].API (projeto)
├── Wiz.[NomeProjeto].Tests (projeto)
├── Wiz.[NomeProjeto] (solução)
- Obrigatoriedade de 80% de teste de cobertura.
- Comandos para geração de build:
- Debug: Executar via Test Explorer (adicionar breakpoint)
- Release: Executar via Test Explorer (não adicionar breakpoint)
-
Ativar funcionalidade Live Unit Testing para executar testes em tempo de desenvolvimento (execução) do projeto.
-
Ativar funcionalidade Code Coverage para cobertura de testes.
As funcionalidades Live Unit Testing e Code Coverage estão disponíveis apenas na versão Enterprise do Visual Studio.
- Executar task de teste desejada:
- test - Executar projeto de testes
- test with coverage - Executar projeto de testes com cobertura
- Ativar Watch na parte inferior do Visual Studio Code para habilitar cores nas classes que descrevem a cobertura. É necessário executar os testes no modo test with coverage.
- Adicionar url do NuGet privado no caminho do menu abaixo:
Tools -> NuGet Package Manager -> Package Sources
-
Abrir Prompt de Comando de sua preferência (CMD ou PowerShell) ou utilizar o terminal do Visual Studio Code;
-
Localizar source (src) do projeto desejado para instalar o NuGet;
-
Executar comando para instalar NuGet privado;
dotnet add package [NomePacote] -s https://pkgs.dev.azure.com/[NomeOrganizacao]/_packaging/[NomeProjeto]/nuget/v3/index.json --interactive
- (Opcional) Na primeira instalação do NuGet privado irá aparecer no terminal um site com um código a ser inserido. Posteriormente, realizar login na conta desejada e o pacote já será instalado.
A instalação é realizada apenas uma vez até a expiração do token de autenticação (3 meses).
- Arquivo de configuração padrão: azure-pipelines.yml.
- Caso há necessidade de incluir mais tasks ao pipeline, verfique a documentação para inclusão: Azure DevOps - Yaml Schema.
- Incluir documentação padrão no arquivo README.md.
- Após inclusão da documentação padrão, excluir este arquivo e TODAS as classes indentificadas como exemplo.
- O serviço para busca de endereço Via CEP assim como o contexto de Customer foi utilizado apenas como exemplo. O uso do serviço Via CEP está disponível no NuGet corporativo.