| name | dotnet-dependency-config |
| description | Dependencias e configuracoes padrao para projetos .NET C# / ASP.NET Core: pacotes NuGet base, Entity Framework Core com PostgreSQL (padrao oficial) e Oracle (alternativa suportada), Mapster para mapeamento, FluentValidation, CQRS nativo, Polly para resiliencia, RabbitMQ com Rmq.CloudEvents, configuration patterns (appsettings, options, DI), Unit of Work, migrations, interceptors, criacao de bibliotecas profissionais NuGet. Usar quando: criar projeto .NET; adicionar infra (DB, cache, messaging); configurar EF Core; alterar baseline de libs; criar ou publicar class library NuGet. |
Dependencias e Configuracoes .NET C# e ASP.NET Core
Documento normativo para padronizacao de dependencias, configuracoes e infraestrutura.
Acionada quando: criar projeto, adicionar nova integracao, alterar infraestrutura.
Politica de Banco de Dados
- PostgreSQL e o padrao oficial para novos servicos
- Oracle e alternativa suportada apenas para: legado, integracoes existentes, ou aprovacao explicita
- Exemplos nesta skill usam PostgreSQL como caminho principal e Oracle como alternativa
Indice
- Bibliotecas Recomendadas
- Entity Framework Core
- Mapeamento
- Configuracao e DI Patterns
- Mensageria — RabbitMQ com Rmq.CloudEvents
- Criacao de Bibliotecas Profissionais
- Checklist de Configuracao
Exemplos de codigo completos ficam em examples/ e devem ser abertos sob demanda conforme a tarefa:
examples/entity-framework-core.md — DbContext, Fluent API, DI (PostgreSQL/Oracle), Unit of Work, repositorios, migrations, connection strings, interceptors de auditoria
examples/di-patterns.md — uso de Unit of Work + Mapster em controller
examples/messaging-rabbitmq.md — Rmq.CloudEvents: configuracao, consumers, publishers, retry/DLQ
examples/nuget-library.md — criacao e publicacao de biblioteca profissional NuGet
1. Bibliotecas Recomendadas
Politica de Versionamento: Sempre utilize a ultima versao stable disponivel de cada pacote.
Nao fixe versoes nesta documentacao para evitar que fique desatualizada.
Use dotnet outdated ou o NuGet Package Manager para verificar atualizacoes.
Core Libraries
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="Microsoft.Extensions.Logging" />
<PackageReference Include="Microsoft.Extensions.Configuration" />
<PackageReference Include="Microsoft.Extensions.Options" />
Web Development (ASP.NET Core)
<PackageReference Include="Microsoft.AspNetCore.OpenApi" />
<PackageReference Include="Swashbuckle.AspNetCore" />
<PackageReference Include="FluentValidation.AspNetCore" />
Database — PostgreSQL (Padrao Oficial)
<PackageReference Include="Microsoft.EntityFrameworkCore" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" />
<PackageReference Include="Microsoft.Extensions.Configuration" />
Database — Oracle (Alternativa Suportada)
<PackageReference Include="Oracle.EntityFrameworkCore" />
HTTP Client
<PackageReference Include="Microsoft.Extensions.Http" />
<PackageReference Include="RestSharp" />
<PackageReference Include="System.Net.Http.Json" />
Serialization
<PackageReference Include="System.Text.Json" />
<PackageReference Include="Newtonsoft.Json" />
Observabilidade (OpenTelemetry — Padrao Oficial)
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" />
Mensageria — RabbitMQ
<PackageReference Include="Rmq.CloudEvents" />
Resilience
<PackageReference Include="Polly" />
<PackageReference Include="Polly.Extensions.Http" />
Utilities
<PackageReference Include="FluentValidation" />
<PackageReference Include="Mapster" />
2. Entity Framework Core
EF Core e o ORM padrao: LINQ, migrations, change tracking, eager/lazy loading e multi-provider (PostgreSQL padrao, Oracle por excecao). A configuracao segue:
- DbContext com
ApplyConfigurationsFromAssembly + entidades configuradas via IEntityTypeConfiguration<T> (Fluent API)
- Registro no DI via
AddDbContext ou AddDbContextPool (PostgreSQL com UseNpgsql, Oracle com UseOracle)
- Unit of Work expondo repositorios +
CommitAsync/RollbackAsync
- Repository Pattern generico (
IBaseRepository<T>) + repositorios especificos com queries complexas (AsNoTracking em leitura, Include para grafos)
- Migrations via
dotnet ef; interceptors (SaveChangesInterceptor) para auditoria
→ DbContext, Fluent API, DI (PG/Oracle), Unit of Work, repositorios, comandos de migrations, connection strings e interceptors completos em examples/entity-framework-core.md.
3. Mapeamento
AutoMapper removido por questoes de licenciamento
Mapster (Recomendado)
TypeAdapterConfig<User, UserDto>.NewConfig();
builder.Services.AddMapster();
var dto = user.Adapt<UserDto>();
var list = users.Adapt<IEnumerable<UserDto>>();
Alternativa: Extension Methods
public static class UserExtensions
{
public static UserDto ToDto(this User user) => new()
{
Id = user.Id,
Name = user.Name,
Email = user.Email
};
}
4. Configuracao e DI Patterns
Padrao de injecao de IUnitOfWork + mapeamento (Mapster) em controllers, com logging estruturado e CancellationToken propagado.
→ Exemplo completo de controller em examples/di-patterns.md.
5. Mensageria — RabbitMQ com Rmq.CloudEvents
Rmq.CloudEvents e a biblioteca padrao para mensageria com RabbitMQ (NuGet · GitHub). Entrega:
- Quorum queues com DLQ (
<queue>.dlq) e DLX automaticos
- CloudEvents JSON (
application/cloudevents+json) com wrap/unwrap transparente
- Retry exponencial (Polly) em publish e consumer handler
- DI-first:
AddRmqCloudEvents, AddRmqConsumer<T, THandler>, IRmqPublisher
- Pipeline de consumer: ACK em sucesso, NACK (
requeue: false) → DLQ em falha final
Requisitos: .NET SDK 8.0+ e RabbitMQ 3.8+ (quorum queues).
→ Configuracao (codigo e appsettings), modelo RmqOptions, registro de consumer/publisher, comportamento em runtime e fluxo de retry/DLX em examples/messaging-rabbitmq.md.
6. Criacao de Bibliotecas Profissionais
Diretrizes para class libraries NuGet: SDK-style projects, multi-target (netstandard2.0;net8.0), Nullable + TreatWarningsAsErrors, design de API publica (scenario-driven, async com CancellationToken, tipos imutaveis, excecoes em vez de codigos de erro), empacotamento com metadata completa, SemVer 2.0.0 e estrategia de evolucao com [Obsolete].
→ Templates de .csproj, comandos dotnet pack/nuget push, estrutura de solucao e regras de SemVer em examples/nuget-library.md.
Checklist de Configuracao
Bibliotecas Essenciais
Entity Framework Core
Mapeamento
Mensageria (RabbitMQ)
Criacao de Bibliotecas