Uses central package management#41
Conversation
Adds Directory.Packages.props to manage package versions centrally. Removes individual PackageReference Version attributes from csproj files and references the central package versions. This change promotes consistency and simplifies dependency management across the solution.
WalkthroughFoi adicionado um arquivo Changes
Sequence Diagram(s)sequenceDiagram
participant Projeto .csproj
participant Directory.Packages.props
participant NuGet Restore
Projeto .csproj->>Directory.Packages.props: Solicita versão do pacote
Directory.Packages.props-->>Projeto .csproj: Fornece versão centralizada
Projeto .csproj->>NuGet Restore: Restaura pacotes com versões centralizadas
Estimated code review effort🎯 2 (Simples) | ⏱️ ~8 minutos Possibly related PRs
Suggested labels
Poem
Note 🔌 MCP (Model Context Protocol) integration is now available in Early Access!Pro users can now connect to remote MCP servers under the Integrations page to get reviews and chat conversations that understand additional development context. 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (2)
InvoiceReminder.DomainEntities.UnitTests/InvoiceReminder.DomainEntities.UnitTests.csproj (1)
1-1: Observação sobre o Sdk do projeto de testesO uso de Sdk="MSTest.Sdk/3.10.1" é independente do CPM e pode permanecer versionado aqui. Se quiser padronizar entre múltiplos projetos, apenas garanta que todos usem a mesma versão do Sdk.
InvoiceReminder.Services/InvoiceReminder.ExternalServices.csproj (1)
15-28: CPM aplicado corretamente; validar versões centrais e compatibilidade de famílias de pacotes
Formato sem Version está correto. Garanta que todas as entradas abaixo estejam definidas em Directory.Packages.props via :
- Google.Apis.Gmail.v1, itext, itext.bouncy-castle-adapter, itext.bouncy-castle-fips-adapter,
Microsoft.AspNetCore.Http.Abstractions, Microsoft.EntityFrameworkCore.Relational,
Microsoft.Extensions.Hosting.Abstractions, Microsoft.Extensions.Logging.Abstractions, SonarAnalyzer.CSharp, Telegram.Bot.itext e os adapters bouncy-castle devem ficar estritamente alinhados na mesma versão para evitar incompatibilidades de runtime. Sugestão: piná-los com a mesma versão no central e documentar a regra.
Exemplo de padronização no arquivo central:
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (17)
Directory.Packages.props(1 hunks)InvoiceReminder.API.UnitTests/InvoiceReminder.API.UnitTests.csproj(2 hunks)InvoiceReminder.API/InvoiceReminder.API.csproj(1 hunks)InvoiceReminder.Application.UnitTests/InvoiceReminder.Application.UnitTests.csproj(2 hunks)InvoiceReminder.Application/InvoiceReminder.Application.csproj(1 hunks)InvoiceReminder.ArchitectureTests/InvoiceReminder.ArchitectureTests.csproj(2 hunks)InvoiceReminder.Authentication/InvoiceReminder.Authentication.csproj(1 hunks)InvoiceReminder.CrossCutting.IoC/InvoiceReminder.CrossCutting.IoC.csproj(1 hunks)InvoiceReminder.Data/InvoiceReminder.Data.csproj(1 hunks)InvoiceReminder.Domain/InvoiceReminder.Domain.csproj(1 hunks)InvoiceReminder.DomainEntities.UnitTests/InvoiceReminder.DomainEntities.UnitTests.csproj(2 hunks)InvoiceReminder.ExternalServices.UnitTests/InvoiceReminder.ExternalServices.UnitTests.csproj(2 hunks)InvoiceReminder.Infrastructure.UnitTests/InvoiceReminder.Infrastructure.UnitTests.csproj(2 hunks)InvoiceReminder.JobScheduler.UnitTests/InvoiceReminder.JobScheduler.UnitTests.csproj(2 hunks)InvoiceReminder.JobScheduler/InvoiceReminder.JobScheduler.csproj(1 hunks)InvoiceReminder.Services/InvoiceReminder.ExternalServices.csproj(1 hunks)InvoiceReminder.UnitTests.Assets/InvoiceReminder.UnitTests.Assets.csproj(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Analyze (csharp)
🔇 Additional comments (28)
Directory.Packages.props (1)
56-62: Verificação concluída: consistência dos SDKs MSTest confirmadaTodos os projetos de teste referenciam
<Project Sdk="MSTest.Sdk/3.10.1">, em total alinhamento com as versões definidas em Directory.Packages.props.InvoiceReminder.UnitTests.Assets/InvoiceReminder.UnitTests.Assets.csproj (2)
10-10: Remoção da versão de System.CodeDom (OK)Remover a versão local está correto, já que
Directory.Packages.propsfixaSystem.CodeDom. Sem objeções aqui.
1-1: Migração para MSTest.Sdk confirmada em todos os projetos de testeAuditei todos os
.csprojdo repositório e confirmei que os seguintes projetos de teste já utilizamMSTest.Sdk/3.10.1:
- InvoiceReminder.API.UnitTests
- InvoiceReminder.Application.UnitTests
- InvoiceReminder.ArchitectureTests
- InvoiceReminder.DomainEntities.UnitTests
- InvoiceReminder.ExternalServices.UnitTests
- InvoiceReminder.Infrastructure.UnitTests
- InvoiceReminder.JobScheduler.UnitTests
- InvoiceReminder.UnitTests.Assets
Podemos aprovar a mudança sem pendências.
InvoiceReminder.Authentication/InvoiceReminder.Authentication.csproj (1)
15-18: Aderência ao gerenciamento central de versõesRemover as versões de EF Core/Relational/Options/SonarAnalyzer está consistente com o novo modelo. Garanta apenas que todas constam no
Directory.Packages.props(constam).InvoiceReminder.Data/InvoiceReminder.Data.csproj (1)
15-37: Verificação concluída: todos os pacotes centralmente gerenciadosO script confirmou que não há
<PackageReference>sem entrada em Directory.Packages.props. A remoção das versões locais e a manutenção dePrivateAssetsnos pacotes de tooling estão corretas.
- InvoiceReminder.Data/InvoiceReminder.Data.csproj: nenhum pacote sem versão central
- Mantenha
<PrivateAssets>all</PrivateAssets>e
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
em Design (Microsoft.EntityFrameworkCore.Design), Tools (Microsoft.EntityFrameworkCore.Tools)
e SonarAnalyzer.CSharp para evitar vazamento transitivoInvoiceReminder.Application/InvoiceReminder.Application.csproj (1)
24-34: Centralização aplicada corretamente no ApplicationReferências a Mapster/EF Core/Logging.Abstractions/Quartz/JWT e SonarAnalyzer agora herdam as versões centrais. Tudo OK aqui.
InvoiceReminder.JobScheduler/InvoiceReminder.JobScheduler.csproj (2)
15-21: CPM aplicado corretamente neste projetoRemover os atributos Version das PackageReference e manter os metadados do analisador (PrivateAssets/IncludeAssets) está alinhado com o uso de Directory.Packages.props.
15-17: Verificação concluída: centralização de versões configurada corretamenteTodos os requisitos foram atendidos:
- Arquivo
Directory.Packages.propslocalizado na raiz da solução<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>está habilitado- Pacotes
Microsoft.Extensions.Hosting,QuartzeSonarAnalyzer.CSharppossuem<PackageVersion>definido no arquivoInvoiceReminder.Domain/InvoiceReminder.Domain.csproj (2)
11-18: Remoção de versões alinhada ao gerenciamento centralAs PackageReference sem Version e o SonarAnalyzer com PrivateAssets/IncludeAssets preservados estão corretos para CPM.
11-15: Verificação concluída: versões centralizadas no Directory.Packages.propsTodos os pacotes referenciados no
InvoiceReminder.Domain.csprojestão devidamente definidos com<PackageVersion>noDirectory.Packages.props. Nenhuma ação adicional é necessária.InvoiceReminder.CrossCutting.IoC/InvoiceReminder.CrossCutting.IoC.csproj (2)
18-27: Centralização bem aplicada e útil para manter versões de EF alinhadasBoa remoção das versões locais (EF Core, Npgsql, Scrutor e SonarAnalyzer). CPM ajuda a evitar divergências entre Microsoft.EntityFrameworkCore, Relational e InMemory.
18-27: Definições de versão centralizadas confirmadasTodas as referências a:
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.InMemory
- Microsoft.EntityFrameworkCore.Relational
- Microsoft.Extensions.DependencyInjection.Abstractions
- Npgsql
- Scrutor
- SonarAnalyzer.CSharp
estão definidas em Directory.Packages.props. Nenhuma ação adicional necessária.
InvoiceReminder.DomainEntities.UnitTests/InvoiceReminder.DomainEntities.UnitTests.csproj (2)
22-25: Remoção de versões nas referências diretas — OKNSubstitute, Shouldly e UserSecrets sem versão local estão corretos sob CPM.
28-36: Updates de pacotes de teste sem versão — alinhado com MSTest.SdkManter os Updates (CodeCoverage, TrxReport, MSTest.Analyzers, TestAdapter, TestFramework) sem Version local evita conflito com o MSTest.Sdk e/ou versões centrais.
InvoiceReminder.Application.UnitTests/InvoiceReminder.Application.UnitTests.csproj (1)
21-27: CPM aplicado nas referências diretas — tudo certoNSubstitute, NSubstitute.Analyzers.CSharp (com metadados) e Shouldly sem Version local estão em conformidade com a centralização.
InvoiceReminder.ArchitectureTests/InvoiceReminder.ArchitectureTests.csproj (3)
1-1: OK manter a versão do Sdk no atributo do projetoA versão do MSTest.Sdk não é gerenciável via Directory.Packages.props. Mantê-la aqui é esperado.
23-25: Boa remoção das versões — aderente ao CPMAs referências NetArchTest.Rules e Shouldly sem Version estão corretas quando centralizadas em Directory.Packages.props.
Confirme que Directory.Packages.props define PackageVersion para esses pacotes.
28-35: Verificar uso de Update vs. Include em PackageReference para pacotes de testeAntes de remover ou converter as linhas, confirme se o Microsoft.NET.Test.Sdk (via
<PackageReference Include="Microsoft.NET.Test.Sdk" />) realmente injeta automaticamente estes pacotes:
- Microsoft.Testing.Extensions.CodeCoverage
- Microsoft.Testing.Extensions.TrxReport
- MSTest.Analyzers
- MSTest.TestAdapter
- MSTest.TestFramework
Pontos de atenção:
- Pacotes não auto-injetados mergulham em Update apenas se já existirem no projeto; caso contrário, precisam de
<PackageReference Include="…" />para serem adicionados.- Se for necessário mantê-los, substitua
UpdateporInclude(e retire qualquer versão local, pois ela virá do Directory.Packages.props).- Para referências que o SDK já inclui (ex.: TestAdapter, TestFramework), remova as linhas com
Updatesem metadados para reduzir ruído — a versão continua centralizada.- Mantenha metadados (como
PrivateAssets/IncludeAssets) apenas onde houverInclude(por exemplo, em MSTest.Analyzers).InvoiceReminder.JobScheduler.UnitTests/InvoiceReminder.JobScheduler.UnitTests.csproj (1)
20-26: Aderência correta ao CPM nas referências diretas de testeRemover Version de NSubstitute, NSubstitute.Analyzers.CSharp (mantendo PrivateAssets/IncludeAssets) e Shouldly está correto quando versions são centralizadas.
Garanta que esses pacotes estejam com PackageVersion definido em Directory.Packages.props.
InvoiceReminder.Infrastructure.UnitTests/InvoiceReminder.Infrastructure.UnitTests.csproj (2)
22-31: Perfeito: referências EF Core e test libs agora centralizadasRemover as versões de Microsoft.EntityFrameworkCore*, NSubstitute e Shouldly está consistente com o objetivo do PR.
Verifique se as versões EF Core (Core/Relational/Sqlite) estão alinhadas entre todos os projetos no Directory.Packages.props para evitar conflitos de binding.
34-41: Incorreto: referênciasUpdatesão necessárias para pacotes implícitos do Test SDKNão há entradas de versão centralizadas em
Directory.Packages.propspara esses pacotes, e o uso de<PackageReference Update="…">sem<Version>herda a versão fornecida pelo próprio Test SDK. Essas referências são adicionadas implicitamente pelo SDK de testes (MSTest) e oUpdateserve justamente para ajustar metadados comoPrivateAssetseIncludeAssets.
Portanto, não remova nem converta para<PackageReference Include="…">, pois isso quebraria a herança de versão e a configuração implicitamente aplicada pelo SDK.Likely an incorrect or invalid review comment.
InvoiceReminder.API/InvoiceReminder.API.csproj (1)
18-31: Mudança correta para CPM nas dependências da APIRemoção de versões em AspNetCore.*, EF Core, Scalar.AspNetCore e SonarAnalyzer.CSharp (mantendo PrivateAssets nos analisadores) está alinhada ao modelo de gerenciamento central.
- Confirme que todas as versões estão definidas em Directory.Packages.props e compatíveis com net9.0.
- Para Microsoft.EntityFrameworkCore.Design, manter PrivateAssets=all está correto para não vazar para consumidores.
InvoiceReminder.API.UnitTests/InvoiceReminder.API.UnitTests.csproj (3)
1-1: SDK de teste pinado no projeto — OKManter Sdk="MSTest.Sdk/3.10.1" no projeto é esperado; não é gerenciado via Directory.Packages.props.
22-29: Uso correto de CPM nas refs diretas e metadados de analyzer preservadosSem versões em Microsoft.AspNetCore.*.Testing, NSubstitute e Shouldly; PrivateAssets/IncludeAssets no analyzer mantidos. Tudo certo.
33-40: Verifique o gerenciamento central de versões para MSTest e Testing ExtensionsAtualmente há vários
<PackageReference Update="…"/>espalhados nos projetos de teste, mas não identificamos entradas de<PackageVersion>emDirectory.Packages.props. Converter esses Update em<PackageReference Include="…" />sem especificar a versão pode quebrar o build se não houver versão herdada.Por favor, confirme:
- Que
Directory.Packages.propsdefine<PackageVersion>para cada um destes pacotes:
- Microsoft.Testing.Extensions.CodeCoverage
- Microsoft.Testing.Extensions.TrxReport
- MSTest.Analyzers
- MSTest.TestAdapter
- MSTest.TestFramework
- Caso não estejam definidos, ou:
- Mantenha o atributo
UpdatecomVersion="…", ou- Adicione as entradas em
Directory.Packages.propsantes de converter paraIncludesem versão.InvoiceReminder.ExternalServices.UnitTests/InvoiceReminder.ExternalServices.UnitTests.csproj (2)
1-1: OK manter MSTest.Sdk pinado no projetoFixar a versão do Project Sdk no .csproj é esperado e não conflita com o CPM do NuGet. Sem ações aqui.
21-29: Validação concluída: CPM aplicado corretamente e mapeamento no central OKTodos os pacotes referenciados em InvoiceReminder.ExternalServices.UnitTests.csproj estão declarados em Directory.Packages.props como
<PackageVersion Include="…">e não há mais atributosVersionem<PackageReference>.Pontos verificados:
- Directory.Packages.props contém entries para
- itext.bouncy-castle-adapter
- itext.bouncy-castle-fips-adapter
- NSubstitute
- NSubstitute.Analyzers.CSharp
- Shouldly
- InvoiceReminder.ExternalServices.UnitTests.csproj não possui nenhum
<PackageReference>com atributoVersion.Nenhuma ação adicional necessária.
InvoiceReminder.Services/InvoiceReminder.ExternalServices.csproj (1)
15-28: Sem referências a ZXing encontradas – remoção de ZXing aprovadaA varredura em todo o código usando
rg -n --hidden -S 'using\s+ZXing|ZXing\.' -g '!bin' -g '!obj'não retornou nenhum resultado. Não há vestígios de namespaces ou tipos ZXing na solução, portanto a remoção de ZXing.Net e ZXing.Net.Bindings.ZKWeb.System.Drawing está segura.
Updates NuGet package references for improved stability and security. Refactors the solution structure to group unit test projects under a dedicated folder and organizes solution items for better maintainability.
Adds Directory.Packages.props to manage package versions centrally.
Removes individual PackageReference Version attributes from csproj files and references the central package versions.
This change promotes consistency and simplifies dependency management across the solution.
✨
Description by Callstackai
This PR adds a central package management system by introducing
Directory.Packages.propsto manage package versions centrally, removing individualPackageReferenceversion attributes from various.csprojfiles.Diagrams of code changes
sequenceDiagram participant Solution as Solution Structure participant Packages as Central Package Management participant Projects as Project References Solution->>Packages: Add Directory.Packages.props Note over Packages: Enable central package versioning Packages->>Projects: Configure Test Projects Note over Projects: Add MSTest, NSubstitute, Shouldly Packages->>Projects: Configure API Dependencies Note over Projects: Add EntityFramework, JWT, OpenAPI Packages->>Projects: Configure External Services Note over Projects: Add Gmail, Telegram, iText Packages->>Projects: Configure Infrastructure Note over Projects: Add PostgreSQL, Dapper, Quartz Solution->>Projects: Organize Solution Structure Note over Projects: Group projects by layer<br/>(API, Domain, Tests, etc.)Files Changed
Directory.Packages.props.This PR includes files in programming languages that we currently do not support. We have not reviewed files with the extensions
.props,.csproj,.sln. See list of supported languages.Summary by CodeRabbit