Package analyzer and Feature Matrix

I have started a .NET Tool, https://github.com/ignatandrei/PackageAnalyzer , that can analyze your solution and generate various statistics.

The program can show you dependency matrix of projects

diagram

The X on the diagonal shows that the project is not dependent on himself.

The 1 shows that the project is dependent DIRECTLY on the other project ( read from left to right, in rows )

The 2( or more ) shows that the project is dependent INDIRECTLY on the other project ( read from left to right, in rows )

nopSolutions nopCommerce & PackageAnalyzer

I have analyzed https://github.com/nopSolutions/nopCommerce .

Number projects : 28 (tests : 1, no tests : 27 )

Number packages : 316 (Outdated: 25, Deprecated: 0, Major version differs 19 )

Total Commits: 10444 ( last commit : this year,2024 )

The commit with max files ( 4387 ) is sha 328a4fb9ddfc581fc035c47a60d35f2461a57d9d on 2021 February 05 )

The file with most commits ( 938 ) is src\Presentation\Nop.Web\src/Presentation/Nop.Web/App_Data/Localization/defaultResources.nopres.xml

27 Projects

diagram

19 Packages with major version different

Nr ID References Projects
1 Microsoft.Data.SqlClient *(References: 2)* **Major differs** 5.2.0 Nop.Data,Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
4.0.5 Nop.Core
2 Microsoft.Data.SqlClient.SNI.runtime *(References: 2)* **Major differs** 5.2.0 Nop.Web,Nop.Data,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
4.0.1 Nop.Core
3 Microsoft.Extensions.Configuration.Abstractions *(References: 2)* **Major differs** 8.0.0 Nop.Web,Nop.Data,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
3.1.32 Nop.Core
4 Microsoft.NETCore.Platforms *(References: 2)* **Major differs** 2.1.2 Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core,Nop.Data
5 Microsoft.Win32.Registry *(References: 2)* **Major differs** 4.7.0 Nop.Web,Nop.Data,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core
6 Microsoft.Win32.SystemEvents *(References: 2)* **Major differs** 5.0.0 Nop.Core
4.7.0 Nop.Data
7 NETStandard.Library *(References: 2)* **Major differs** 1.6.1 Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
2.0.0 Nop.Plugin.Tax.Avalara
8 System.Configuration.ConfigurationManager *(References: 2)* **Major differs** 8.0.0 Nop.Data,Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core
9 System.Drawing.Common *(References: 2)* **Major differs** 5.0.0 Nop.Core
4.7.0 Nop.Data
10 System.Formats.Asn1 *(References: 2)* **Major differs** 8.0.0 Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core
11 System.Runtime.Caching *(References: 2)* **Major differs** 8.0.0 Nop.Web,Nop.Data,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core
12 System.Security.AccessControl *(References: 2)* **Major differs** 6.0.0 Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core,Nop.Data
13 System.Security.Cryptography.Cng *(References: 3)* **Major differs** 4.5.0 Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core
4.7.0 Nop.Data
14 System.Security.Cryptography.Pkcs *(References: 2)* **Major differs** 8.0.0 Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
4.7.0 Nop.Core,Nop.Data
15 System.Security.Cryptography.ProtectedData *(References: 2)* **Major differs** 8.0.0 Nop.Web,Nop.Data,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core
16 System.Security.Cryptography.Xml *(References: 2)* **Major differs** 6.0.1 Nop.Web,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
4.7.1 Nop.Core,Nop.Data
17 System.Security.Permissions *(References: 2)* **Major differs** 5.0.0 Nop.Core
4.7.0 Nop.Data
18 System.Text.Encoding.CodePages *(References: 2)* **Major differs** 4.5.1 Nop.Web,Nop.Data,Nop.Services,Nop.Plugin.Payments.Manual,Nop.Web.Framework,Nop.Plugin.Shipping.UPS,Nop.Plugin.Payments.CheckMoneyOrder,Nop.Plugin.Widgets.GoogleAnalytics,Nop.Plugin.ExternalAuth.Facebook,Nop.Plugin.Widgets.NivoSlider,Nop.Plugin.ExchangeRate.EcbExchange,Nop.Plugin.Pickup.PickupInStore,Nop.Plugin.Shipping.FixedByWeightByTotal,Nop.Plugin.Tax.FixedOrByCountryStateZip,Nop.Plugin.DiscountRules.CustomerRoles,Nop.Plugin.Misc.Brevo,Nop.Plugin.Tax.Avalara,Nop.Plugin.Widgets.FacebookPixel,Nop.Plugin.MultiFactorAuth.GoogleAuthenticator,Nop.Tests,Nop.Plugin.Payments.PayPalCommerce,Nop.Plugin.Misc.WebApi.Frontend,Nop.Plugin.Widgets.What3words,Nop.Plugin.Misc.Zettle,Nop.Plugin.Misc.NopMobileApp,Nop.Plugin.Misc.Omnisend,Nop.Plugin.Payments.AmazonPay
5.0.0 Nop.Core
19 System.Windows.Extensions *(References: 2)* **Major differs** 5.0.0 Nop.Core
4.7.0 Nop.Data

Commits

Commits per year

diagram

Most Commits per file

(Most commits 938 , median 2 )

diagram

Nr Number commits Name Full Path
1 938 defaultResources.nopres.xml D:\gth\nopCommerce\src\Presentation\Nop.Web\src/Presentation/Nop.Web/App_Data/Localization/defaultResources.nopres.xml
2 669 Nop.Web.csproj D:\gth\nopCommerce\src\Presentation\Nop.Web\src/Presentation/Nop.Web/Nop.Web.csproj
3 528 CodeFirstInstallationService.cs D:\gth\nopCommerce\src\Libraries\Nop.Services\src/Libraries/Nop.Services/Installation/CodeFirstInstallationService.cs
4 415 Nop.Core.csproj D:\gth\nopCommerce\src\Libraries\Nop.Core\src/Libraries/Nop.Core/Nop.Core.csproj
5 412 CatalogController.cs D:\gth\nopCommerce\src\Presentation\Nop.Web\src/Presentation/Nop.Web/Controllers/CatalogController.cs
6 389 Nop.Services.csproj D:\gth\nopCommerce\src\Libraries\Nop.Services\src/Libraries/Nop.Services/Nop.Services.csproj
7 373 Nop.Admin.csproj D:\gth\nopCommerce\src\Presentation\Nop.Web\src/Presentation/Nop.Web/Administration/Nop.Admin.csproj
8 365 ShoppingCartController.cs D:\gth\nopCommerce\src\Presentation\Nop.Web\src/Presentation/Nop.Web/Controllers/ShoppingCartController.cs
9 356 CustomerController.cs D:\gth\nopCommerce\src\Presentation\Nop.Web\src/Presentation/Nop.Web/Controllers/CustomerController.cs
10 337 InstallationService.cs D:\gth\nopCommerce\src\Libraries\Nop.Services\src/Libraries/Nop.Services/Installation/InstallationService.cs
11 336 ProductService.cs D:\gth\nopCommerce\src\Libraries\Nop.Services\src/Libraries/Nop.Services/Catalog/ProductService.cs

Commits with most files per year

diagram

Nr SHA Date NrFiles
1 4d7b572e6d3594100afad84e20b1227b75c5f0a6 2024 Jan 29 224
2 8529469ab9db3f38f9f8d0d40034768a49d65f41 2023 Mar 10 2477
3 d4b18d527815f3b62842b41685dd678046e08b85 2022 Aug 15 440
4 328a4fb9ddfc581fc035c47a60d35f2461a57d9d 2021 Feb 05 4387
5 469c0a622402bd09948afea43f16053cd383f7f4 2020 Apr 14 2608
6 aa801448025f35dc9fae3eb4dfdaae9e3ce041f6 2019 Aug 06 2994
7 408b0b06a459bc094476445297123dc5b2e33028 2018 Jun 07 393
8 c7292b45ff9b8101e67ed1ff3f78aee47a0328fb 2017 May 16 1823
9 d00d3c6243b92838ee63d731cee2702b9262dfc3 2016 Jun 14 701
10 f798ea024d9fe0be332d63a720f92fdd23b85467 2015 Feb 07 235
11 2cd400fa80ef44cfb1eac6a38c92b23ca2c4d68f 2014 Mar 20 1513
12 7b791fa6d2ea51f49c5fb4e502eb7c8749013c99 2013 Dec 17 981
13 a4252509b66149f90973a98b4461807adf31346d 2012 Mar 10 305
14 2c8f71e28f79acf25dd870c405e83a078492f977 2011 Mar 24 697
15 03f355b78864109bb9b64b572404cf371f7c6724 2010 Dec 27 25

### Commits with max files

diagram

Nr SHA Date NrFiles
1 328a4fb9ddfc581fc035c47a60d35f2461a57d9d 2021 Feb 05 4387
2 37848aee0d92deda1dd9b037423b71d9d4b39003 2021 Feb 09 4078
3 aa801448025f35dc9fae3eb4dfdaae9e3ce041f6 2019 Aug 06 2994
4 469c0a622402bd09948afea43f16053cd383f7f4 2020 Apr 14 2608
5 c89bdec388fe4b42ca4f18bf8d9421de553a2684 2019 Nov 22 2514
6 8529469ab9db3f38f9f8d0d40034768a49d65f41 2023 Mar 10 2477
7 c7292b45ff9b8101e67ed1ff3f78aee47a0328fb 2017 May 16 1823
8 19c345ddd88070a544e2375992e2a6e405f094c0 2017 May 18 1635
9 2cd400fa80ef44cfb1eac6a38c92b23ca2c4d68f 2014 Mar 20 1513
10 311ed49e84c58543c9caa88fa97b671a2bc27915 2020 Jul 14 1452
11 7842aa067429792d58f0cd73f1558beb4c182541 2017 May 18 1256

Generated by https://www.nuget.org/packages/NetPackageAnalyzerConsole

dotnetcore CAP & package analyzer

I have analyzed https://github.com/dotnetcore/CAP

Summary

Number projects : 32 (tests : 3, no tests : 29 )

Number packages : 278 (Outdated: 29, Deprecated: 0, Major version differs 43 )

Most public classes :DotNetCore.CAP 50

Total Commits: 1768 ( last commit : this year,2024 )

The commit with max files ( 173 ) is sha 5d1c1bfb0872e343b2ecd4d65e6e4961dca56dda on 2019 September 12 )

The file with most commits ( 82 ) is D:\gth\CAP\build\build/version.props

29 Projects without tests

diagram

Projects with tests

diagram

43 Packages with major version different

Nr ID References Projects
1 FSharp.Core *(References: 2)* **Major differs** 7.0.400 DotNetCore.CAP.Pulsar
8.0.100 DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
2 Microsoft.Bcl.AsyncInterfaces *(References: 3)* **Major differs** 1.1.1 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
6.0.0 DotNetCore.CAP.AzureServiceBus,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test
7.0.0 DotNetCore.CAP.Pulsar
3 Microsoft.EntityFrameworkCore *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer
8.0.0 Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer
4 Microsoft.EntityFrameworkCore.Abstractions *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer
8.0.0 Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer
5 Microsoft.EntityFrameworkCore.Analyzers *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer
8.0.0 Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer
6 Microsoft.EntityFrameworkCore.Relational *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.PostgreSql,DotNetCore.CAP.MySql.Test,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer
8.0.0 Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer
7 Microsoft.Extensions.Caching.Abstractions *(References: 3)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer
8.0.0 Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
7.0.0 DotNetCore.CAP.Pulsar
8 Microsoft.Extensions.Caching.Memory *(References: 3)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer
8.0.0 Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
7.0.0 DotNetCore.CAP.Pulsar
9 Microsoft.Extensions.Configuration.Abstractions *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.PostgreSql,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Pulsar,DotNetCore.CAP.Dashboard.K8s
8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,BuildScript,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
10 Microsoft.Extensions.DependencyInjection *(References: 3)* **Major differs** 8.0.0 DotNetCore.CAP.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer,BuildScript,Sample.ConsoleApp,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry
6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer,Sample.Dashboard.Jwt,DotNetCore.CAP.Dashboard.K8s
7.0.0 DotNetCore.CAP.Pulsar
11 Microsoft.Extensions.DependencyInjection.Abstractions *(References: 3)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Dashboard.K8s
8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,DotNetCore.CAP.PostgreSql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,BuildScript,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Pulsar
12 Microsoft.Extensions.FileProviders.Abstractions *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.PostgreSql,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Pulsar,DotNetCore.CAP.OpenTelemetry,DotNetCore.CAP.Dashboard.K8s
8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,BuildScript,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
13 Microsoft.Extensions.Hosting.Abstractions *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.PostgreSql,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Pulsar,DotNetCore.CAP.OpenTelemetry,DotNetCore.CAP.Dashboard.K8s
8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
14 Microsoft.Extensions.Http *(References: 2)* **Major differs** 3.1.0 Sample.RabbitMQ.MySql,Sample.Dashboard.Jwt,DotNetCore.CAP.Dashboard.K8s
7.0.0 DotNetCore.CAP.Pulsar
15 Microsoft.Extensions.Logging *(References: 3)* **Major differs** 8.0.0 DotNetCore.CAP.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.SqlServer,BuildScript,Sample.ConsoleApp,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry
6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer,Sample.Dashboard.Jwt,DotNetCore.CAP.Dashboard.K8s
7.0.0 DotNetCore.CAP.Pulsar
16 Microsoft.Extensions.Logging.Abstractions *(References: 3)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Dashboard.K8s
8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,DotNetCore.CAP.PostgreSql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,BuildScript,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
7.0.1 DotNetCore.CAP.MySql,DotNetCore.CAP.Pulsar
17 Microsoft.Extensions.Options *(References: 3)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.PostgreSql,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Dashboard.K8s
8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,BuildScript,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Pulsar
18 Microsoft.Extensions.Primitives *(References: 3)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.PostgreSql,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Dashboard.K8s
8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,BuildScript,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Pulsar
19 Microsoft.IdentityModel.Abstractions *(References: 3)* **Major differs** 6.24.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
7.0.3 Sample.RabbitMQ.MySql,Sample.Dashboard.Auth,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Dashboard.K8s
20 Microsoft.IdentityModel.JsonWebTokens *(References: 3)* **Major differs** 6.24.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
7.0.3 Sample.RabbitMQ.MySql,Sample.Dashboard.Auth,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Dashboard.K8s
21 Microsoft.IdentityModel.Logging *(References: 3)* **Major differs** 6.24.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
7.0.3 Sample.RabbitMQ.MySql,Sample.Dashboard.Auth,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Dashboard.K8s
22 Microsoft.IdentityModel.Protocols *(References: 2)* **Major differs** 6.24.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
7.0.3 Sample.RabbitMQ.MySql,Sample.Dashboard.Auth,Sample.Dashboard.Jwt
23 Microsoft.IdentityModel.Protocols.OpenIdConnect *(References: 2)* **Major differs** 6.24.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
7.0.3 Sample.RabbitMQ.MySql,Sample.Dashboard.Auth,Sample.Dashboard.Jwt
24 Microsoft.IdentityModel.Tokens *(References: 3)* **Major differs** 6.24.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
7.0.3 Sample.RabbitMQ.MySql,Sample.Dashboard.Auth,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Dashboard.K8s
25 Microsoft.NETCore.Platforms *(References: 3)* **Major differs** 1.1.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.SqlServer,DotNetCore.CAP.Test,Samples.Redis.SqlServer,DotNetCore.CAP.Pulsar,DotNetCore.CAP.AzureServiceBus.Test
5.0.0 DotNetCore.CAP.MongoDB,Sample.RabbitMQ.MongoDB,BuildScript
1.0.1 Sample.Pulsar.InMemory
26 Newtonsoft.Json *(References: 3)* **Major differs** 13.0.1 DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,Sample.RabbitMQ.MongoDB,DotNetCore.CAP.Dashboard,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,DotNetCore.CAP.Test,Sample.AmazonSQS.InMemory,Sample.Dashboard.Auth,Sample.Pulsar.InMemory,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt,DotNetCore.CAP.Dashboard.K8s
13.0.3 BuildScript
10.0.3 DotNetCore.CAP.Pulsar
27 NSec.Cryptography *(References: 2)* **Major differs** 20.2.0 DotNetCore.CAP.Pulsar
22.4.0 DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
28 NuGet.Frameworks *(References: 2)* **Major differs** 6.5.0 DotNetCore.CAP.MySql.Test,DotNetCore.CAP.Test,DotNetCore.CAP.AzureServiceBus.Test
5.4.0 BuildScript
29 Pulsar.Client *(References: 2)* **Major differs** 2.15.0 DotNetCore.CAP.Pulsar
3.1.0 DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
30 System.CodeDom *(References: 2)* **Major differs** 7.0.0 DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
6.0.0 DotNetCore.CAP.AzureServiceBus.Test
31 System.Collections.Immutable *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,Sample.Kafka.PostgreSql,Samples.Redis.SqlServer
7.0.0 BuildScript,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
32 System.Diagnostics.DiagnosticSource *(References: 6)* **Major differs** 8.0.0 DotNetCore.CAP,DotNetCore.CAP.MySql.Test,Sample.RabbitMQ.MySql,DotNetCore.CAP.PostgreSql,Sample.RabbitMQ.MongoDB,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,DotNetCore.CAP.Test,Sample.ConsoleApp,Sample.AmazonSQS.InMemory,Samples.Redis.SqlServer,Sample.Dashboard.Auth,DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory,DotNetCore.CAP.OpenTelemetry,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test,Sample.Dashboard.Jwt
6.0.1 DotNetCore.CAP.SqlServer,DotNetCore.CAP.AzureServiceBus
7.0.2 DotNetCore.CAP.MySql
4.0.0 BuildScript
4.3.0 DotNetCore.CAP.Pulsar
6.0.0 DotNetCore.CAP.Dashboard.K8s
33 System.IdentityModel.Tokens.Jwt *(References: 3)* **Major differs** 6.24.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
7.0.3 Sample.RabbitMQ.MySql,Sample.Dashboard.Auth,Sample.Dashboard.Jwt
7.0.0 DotNetCore.CAP.Dashboard.K8s
34 System.IO.Pipelines *(References: 3)* **Major differs** 5.0.1 Samples.Redis.SqlServer,DotNetCore.CAP.RedisStreams
7.0.0 DotNetCore.CAP.Pulsar
8.0.0 DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
35 System.Reflection.Metadata *(References: 2)* **Major differs** 1.6.0 DotNetCore.CAP.MySql.Test,DotNetCore.CAP.Test,DotNetCore.CAP.AzureServiceBus.Test
7.0.0 BuildScript
36 System.Runtime.CompilerServices.Unsafe *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP,DotNetCore.CAP.Kafka,DotNetCore.CAP.RabbitMQ,DotNetCore.CAP.SqlServer,DotNetCore.CAP.MySql,DotNetCore.CAP.MySql.Test,DotNetCore.CAP.PostgreSql,DotNetCore.CAP.MongoDB,DotNetCore.CAP.AzureServiceBus,DotNetCore.CAP.Dashboard,Sample.RabbitMQ.SqlServer,Sample.Kafka.PostgreSql,BuildScript,DotNetCore.CAP.InMemoryStorage,DotNetCore.CAP.AmazonSQS,DotNetCore.CAP.NATS,Samples.Redis.SqlServer,DotNetCore.CAP.RedisStreams,DotNetCore.CAP.Pulsar,DotNetCore.CAP.OpenTelemetry,Sample.Dashboard.Jwt,DotNetCore.CAP.Dashboard.K8s
5.0.0 Sample.RabbitMQ.MongoDB
37 System.Security.AccessControl *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
5.0.0 DotNetCore.CAP.MongoDB,Sample.RabbitMQ.MongoDB,BuildScript
38 System.Security.Cryptography.Cng *(References: 3)* **Major differs** 5.0.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
4.3.0 DotNetCore.CAP.MySql.Test,DotNetCore.CAP.Test,DotNetCore.CAP.Pulsar,DotNetCore.CAP.AzureServiceBus.Test
4.2.0 BuildScript,Sample.Pulsar.InMemory
39 System.Security.Cryptography.ProtectedData *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
4.3.0 BuildScript
40 System.Text.Encoding.CodePages *(References: 2)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
4.4.0 BuildScript
41 System.Text.Encodings.Web *(References: 4)* **Major differs** 6.0.0 DotNetCore.CAP.SqlServer,Sample.RabbitMQ.SqlServer,Samples.Redis.SqlServer
8.0.0 DotNetCore.CAP.PostgreSql,BuildScript,Sample.ConsoleApp
4.7.2 DotNetCore.CAP.AzureServiceBus,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test
7.0.0 DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
42 System.Text.Json *(References: 4)* **Major differs** 4.7.2 DotNetCore.CAP.SqlServer,DotNetCore.CAP.AzureServiceBus,Samples.Redis.SqlServer,Sample.AzureServiceBus.InMemory,DotNetCore.CAP.AzureServiceBus.Test
8.0.0 DotNetCore.CAP.PostgreSql,BuildScript,Sample.ConsoleApp
5.0.1 Sample.RabbitMQ.SqlServer
7.0.3 DotNetCore.CAP.Pulsar,Sample.Pulsar.InMemory
43 YamlDotNet *(References: 2)* **Major differs** 13.3.1 Sample.RabbitMQ.MySql,Sample.Dashboard.Jwt,DotNetCore.CAP.Dashboard.K8s
8.1.2 BuildScript

Summary of project public classes

Assemblies with number of public classes

diagram

Assemblies with Public methods

diagram

Classes with Public methods

diagram

Lines summary

Assemblies with most lines in public classses

diagram

Public Classes with most lines

diagram

Public Methods with most lines

diagram

References between projects

Assemblies with References

Classes with References

Commits

Commits per year

diagram

Most Commits per file

(Most commits 82 , median 3 )

diagram

Nr Number commits Name Full Path
1 82 version.props D:\gth\CAP\build\build/version.props
2 70 RabbitMQConsumerClient.cs D:\gth\CAP\src\DotNetCore.CAP.RabbitMQ\src/DotNetCore.CAP.RabbitMQ/RabbitMQConsumerClient.cs
3 65 DotNetCore.CAP.csproj D:\gth\CAP\src\DotNetCore.CAP\src/DotNetCore.CAP/DotNetCore.CAP.csproj
4 61 CAP.ServiceCollectionExtensions.cs D:\gth\CAP\src\DotNetCore.CAP\src/DotNetCore.CAP/CAP.ServiceCollectionExtensions.cs
5 57 KafkaConsumerClient.cs D:\gth\CAP\src\DotNetCore.CAP.Kafka\src/DotNetCore.CAP.Kafka/KafkaConsumerClient.cs
6 54 CAP.Options.cs D:\gth\CAP\src\DotNetCore.CAP\src/DotNetCore.CAP/CAP.Options.cs
7 54 IConsumerHandler.Default.cs D:\gth\CAP\src\DotNetCore.CAP\src/DotNetCore.CAP/IConsumerHandler.Default.cs
8 52 DotNetCore.CAP.MySql.csproj D:\gth\CAP\src\DotNetCore.CAP.MySql\src/DotNetCore.CAP.MySql/DotNetCore.CAP.MySql.csproj
9 48 IDispatcher.Default.cs D:\gth\CAP\src\DotNetCore.CAP\src/DotNetCore.CAP/Processor/IDispatcher.Default.cs
10 48 IConsumerRegister.Default.cs D:\gth\CAP\src\DotNetCore.CAP\src/DotNetCore.CAP/Internal/IConsumerRegister.Default.cs
11 43 IConsumerServiceSelector.Default.cs D:\gth\CAP\src\DotNetCore.CAP\src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs

Commits with most files per year

diagram

Nr SHA Date NrFiles
1 19f64079dd53e28ae858b92769c27348696aa410 2024 May 29 8
2 d6ce0b98b950cdd80bed0f809ed483c78354b782 2023 Jun 20 49
3 aa5ffd098a8b88f9ab8efbdfec8fc09f46d88932 2022 Oct 27 83
4 55a2dcf028834f23d5799fe7ef51228cfe739971 2021 May 19 148
5 3dcb8690ff64b019d3f4ded77d9ece4650b24fd1 2020 Jul 16 10
6 5d1c1bfb0872e343b2ecd4d65e6e4961dca56dda 2019 Sep 12 173
7 f477b09ed969911599898673dfd0edd5ddd0b181 2018 Mar 27 172
8 5e432a94bb595c63b70ca0955b3d34970136fdb5 2017 Sep 29 110

### Commits with max filesdiagram

Nr SHA Date NrFiles
1 5d1c1bfb0872e343b2ecd4d65e6e4961dca56dda 2019 Sep 12 173
2 f477b09ed969911599898673dfd0edd5ddd0b181 2018 Mar 27 172
3 77282fe1a67bb11da18ad872e8740ee253f54c42 2018 Mar 27 172
4 55a2dcf028834f23d5799fe7ef51228cfe739971 2021 May 19 148
5 5e432a94bb595c63b70ca0955b3d34970136fdb5 2017 Sep 29 110
6 5d1c1bfb0872e343b2ecd4d65e6e4961dca56dda 2019 Sep 12 107
7 6a1b54410acce1cdeaecc32f40443830ac711b21 2017 Aug 25 94
8 fc50d995ed66126ea8e10e2163327a6e99b057b3 2017 Aug 27 91
9 aa5ffd098a8b88f9ab8efbdfec8fc09f46d88932 2022 Oct 27 83
10 bfd9ea4ec090c96939bec5a1f54a0034d82b7476 2017 Sep 27 59
11 aa597fca017e288a2ad4e498a058b10141c36e64 2017 Jun 23 53

RSCG – GoLive.Generator.BlazorInterop

RSCG – GoLive.Generator.BlazorInterop
 
 

name GoLive.Generator.BlazorInterop
nuget https://www.nuget.org/packages/GoLive.Generator.BlazorInterop/
link https://github.com/surgicalcoder/BlazorInteropGenerator
author surgicalcoder

Generating interop from C# to javascript for Blazor

 

This is how you can use GoLive.Generator.BlazorInterop .

The code that you start with is


<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">

  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="GoLive.Generator.BlazorInterop" Version="2.0.7">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0-rc.2.24474.3" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0-rc.2.24474.3" PrivateAssets="all" />
  </ItemGroup>
	
	<ItemGroup>
		<AdditionalFiles Include="BlazorInterop.json" />
	</ItemGroup>
	<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>


</Project>


The code that you will use is


{
  "Files": [
    {
      "Output_DeleteThis_ToHave_InYourProject": "JSInterop.cs",
      "ClassName": "JSInterop",
      "Source": "wwwroot\\blazorinterop.js",
      "Namespace": "GoLive.Generator.BlazorInterop.Playground.Client",
      "ObjectToInterop": "window.blazorInterop",
      "Init": ["window={}"]
    }
  ],
  "InvokeVoidString": "await JSRuntime.InvokeVoidAsync(\"{0}\", {1});",
  "InvokeString": "return await JSRuntime.InvokeAsync<T>(\"{0}\",{1});"
}



window.blazorInterop = {
    showModal: function (dialogId) {
        window.alert('see after this the page title'+dialogId);
        return true;
    },
    setPageTitle: function(title) {
        document.title = title;
    },    
};


@page "/"

@inject IJSRuntime JS

<PageTitle>Home</PageTitle>

<h1>Hello, world!</h1>

Welcome to your new app.

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private async Task IncrementCount()
    {
        currentCount++;
        var res= await JS.showModalAsync<bool>(currentCount);
        await JS.setPageTitleVoidAsync($" after {currentCount}  the result is " + res);
    }
}



<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>MyTestBlazoe</title>
    <base href="/" />
    <link rel="stylesheet" href="lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="css/app.css" />
    <link rel="icon" type="image/png" href="favicon.png" />
    <link href="MyTestBlazoe.styles.css" rel="stylesheet" />
    <script src="blazorinterop.js" ></script>
</head>

<body>
    <div id="app">
        <svg class="loading-progress">
            <circle r="40%" cx="50%" cy="50%" />
            <circle r="40%" cx="50%" cy="50%" />
        </svg>
        <div class="loading-progress-text"></div>
    </div>

    <div id="blazor-error-ui">
        An unhandled error has occurred.
        <a href="." class="reload">Reload</a>
        <span class="dismiss">🗙</span>
    </div>
    <script src="_framework/blazor.webassembly.js"></script>
</body>

</html>


 

The code that is generated is

using System.Threading.Tasks;
using Microsoft.JSInterop;

namespace GoLive.Generator.BlazorInterop.Playground.Client
{
    public static class JSInterop
    {
        public static string _window_blazorInterop_showModal => "window.blazorInterop.showModal";

        public static async Task showModalVoidAsync(this IJSRuntime JSRuntime, object @dialogId)
        {
            await JSRuntime.InvokeVoidAsync("window.blazorInterop.showModal", @dialogId);
        }

        public static async Task<T> showModalAsync<T>(this IJSRuntime JSRuntime, object @dialogId)
        {
            return await JSRuntime.InvokeAsync<T>("window.blazorInterop.showModal", @dialogId);
        }

        public static string _window_blazorInterop_setPageTitle => "window.blazorInterop.setPageTitle";

        public static async Task setPageTitleVoidAsync(this IJSRuntime JSRuntime, object @title)
        {
            await JSRuntime.InvokeVoidAsync("window.blazorInterop.setPageTitle", @title);
        }

        public static async Task<T> setPageTitleAsync<T>(this IJSRuntime JSRuntime, object @title)
        {
            return await JSRuntime.InvokeAsync<T>("window.blazorInterop.setPageTitle", @title);
        }
    }
}

Code and pdf at

https://ignatandrei.github.io/RSCG_Examples/v2/docs/GoLive.Generator.BlazorInterop

RSCG – Hsu.Sg.FluentMember

RSCG – Hsu.Sg.FluentMember
 
 

name Hsu.Sg.FluentMember
nuget https://www.nuget.org/packages/Hsu.Sg.FluentMember/
link https://github.com/hsu-net/source-generators
author Net Hsu

Adding builder pattern to classes

 

This is how you can use Hsu.Sg.FluentMember .

The code that you start with is


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

	  <PropertyGroup>
        <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
        <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
    </PropertyGroup>

	  <ItemGroup>
	    <PackageReference Include="Hsu.Sg.FluentMember" Version="2024.101.8-rc175707">
	      <PrivateAssets>all</PrivateAssets>
	      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
	    </PackageReference>
	  </ItemGroup>

	 
	  
</Project>


The code that you will use is


using Builder;

var pOld = new Person();
pOld= pOld.WithFirstName("Andrei").WithLastName("Ignat").WithMiddleName("G");

System.Console.WriteLine(pOld.FullName());



namespace Builder;
[Hsu.Sg.FluentMember.FluentMember]
public partial class Person
{
    public string FirstName { get; init; }
    public string? MiddleName { get; init; }
    public string LastName { get; init; }

    public string FullName()
    {
        return FirstName + " " + MiddleName + " "+LastName;
    }
    
}


 

The code that is generated is

// <auto-generated/>

using System;

namespace Hsu.Sg.FluentMember
{
    /// <summary>
    /// The flag to generate member set method.
    /// </summary>
    [AttributeUsage(
        AttributeTargets.Struct |
        AttributeTargets.Class,
        AllowMultiple = false,
        Inherited = false)]
    internal sealed class FluentMemberAttribute : Attribute
    {
        
        /// <summary>
        ///     The public member are generated.
        /// </summary>
        public bool Public { get; set; } = true;

        /// <summary>
        ///     The internal member are generated.
        /// </summary>
        public bool Internal { get; set; }

        /// <summary>
        ///     The private member are generated.
        /// </summary>
        public bool Private { get; set; }

        /// <summary>
        ///     Only [FluentMemberGen] member are generated.
        /// </summary>
        public bool Only { get; set; }

        /// <summary>
        /// The prefix of member name.
        /// </summary>
        /// <remarks>default is `With`</remarks>
        public string Prefix { get; set; } = string.Empty;
    }

    [AttributeUsage(AttributeTargets.Field |
        AttributeTargets.Property |
        AttributeTargets.Event,
        AllowMultiple = false,
        Inherited = false)]
    internal sealed class FluentMemberGenAttribute : Attribute
    {
        /// <summary>
        ///   Ignore member.
        /// </summary>
        public bool Ignore { get; set; }

        /// <summary>
        /// The specific name of member.
        /// </summary>
        public string Identifier { get; set; } = string.Empty;

        /// <summary>
        /// The prefix of member name.
        /// </summary>
        /// <remarks>default is `With`</remarks>
        public string Prefix { get; set; } = string.Empty;

        /// <summary>
        /// The modifier of member
        /// </summary>
        /// <remarks>default is <see cref="Accessibility.Inherit"/></remarks>
        public Accessibility Modifier { get; set; } = Accessibility.Inherit;
    }

    /// <summary>
    /// The accessibility for fluent member set method.
    /// </summary>
    //[System.DefaultValue(Inherit)]
    internal enum Accessibility
    {
        /// <summary>
        /// Inherit from the member.
        /// </summary>
        Inherit,
        /// <summary>
        /// Is public access.
        /// </summary>
        Public,
        /// <summary>
        /// Is internal access.
        /// </summary>
        Internal,
        /// <summary>
        /// Is protected access.
        /// </summary>
        Protected,
        /// <summary>
        /// Is private access.
        /// </summary>
        Private
    }
    
    /// <summary>
    /// The event assignment
    /// </summary>
    //[System.DefaultValue(Add)]
    public enum EventAssignable
    {
        /// <summary>
        /// To add the event
        /// </summary>
        Add,
        /// <summary>
        /// To remove the event
        /// </summary>
        Remove,
        /// <summary>
        /// To set the event
        /// </summary>
        Assign
    }
}

Code and pdf at

https://ignatandrei.github.io/RSCG_Examples/v2/docs/Hsu.Sg.FluentMember

RSCG – QueryStringGenerator

RSCG – QueryStringGenerator
 
 

name QueryStringGenerator
nuget https://www.nuget.org/packages/QueryStringGenerator/
link https://github.com/tparviainen/query-string-generator
author Tomi Parviainen

Generate from string properties of a class a query string for a URL.

 

This is how you can use QueryStringGenerator .

The code that you start with is


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="QueryStringGenerator" Version="1.1.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>
	<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>
</Project>


The code that you will use is


using DemoQuery;
Person p = new();
p.FirstName = "Andrei";
p.LastName = "Ignat";
p.Age = 55;
Console.WriteLine(p.ToQueryString());


using QueryStringGenerator;
namespace DemoQuery;
[QueryString]
internal class Person
{
    public string FirstName { get; set; }=string.Empty;
    public int Age {  get; set; }
    public string LastName { get; set; } = string.Empty;

}


 

The code that is generated is

// <auto-generated />

namespace DemoQuery
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("QueryStringGenerator", "1.0.0")]
    internal static class QueryStringExtensionForPerson
    {
        public static string ToQueryString(this Person _this)
        {
            if (_this == null)
            {
                return string.Empty;
            }

            var sb = new System.Text.StringBuilder();

            if (_this.FirstName != null)
            {
                sb.Append($"&firstname={System.Net.WebUtility.UrlEncode(_this.FirstName)}");
            }

            if (_this.LastName != null)
            {
                sb.Append($"&lastname={System.Net.WebUtility.UrlEncode(_this.LastName)}");
            }

            return sb.ToString();
        }
    }
}

// <auto-generated />

namespace QueryStringGenerator
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("QueryStringGenerator", "1.0.0")]
    internal class QueryStringAttribute : System.Attribute
    {
        public string MethodName { get; set; }

        public QueryStringAttribute(string methodName = "ToQueryString")
        {
            MethodName = methodName;
        }
    }
}

Code and pdf at

https://ignatandrei.github.io/RSCG_Examples/v2/docs/QueryStringGenerator

RSCG – GenPack

RSCG – GenPack
 
 

name GenPack
nuget https://www.nuget.org/packages/GenPack/
link https://github.com/dimohy/GenPack
author dimohy

Generating Binary Serialization and properties for class

 

This is how you can use GenPack .

The code that you start with is


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
	<ItemGroup>
		<PackageReference Include="GenPack" Version=" 0.9.0-preview1" OutputItemType="Analyzer" ReferenceOutputAssembly="true" />
	</ItemGroup>
	<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>
</Project>


The code that you will use is


using SerializerDemo;

var p= new Person() { Name= "Andrei Ignat" };
var bytes= p.ToPacket();
var entity = Person.FromPacket(bytes);
Console.WriteLine("name is "+entity.Name);



using GenPack;

namespace SerializerDemo;


[GenPackable]
public partial record Person
{

    public readonly static PacketSchema Schema = PacketSchemaBuilder.Create()
           .@short("Id", "Age description")
           .@string("Name", "Name description")
           .Build();
}



 

The code that is generated is

#pragma warning disable CS0219
namespace SerializerDemo
{
    public partial record Person : GenPack.IGenPackable
    {
        /// <summary>
        /// Age description
        /// </summary>
        public short Id { get; set; }
        /// <summary>
        /// Name description
        /// </summary>
        public string Name { get; set; } = string.Empty;
        public byte[] ToPacket()
        {
            using var ms = new System.IO.MemoryStream();
            ToPacket(ms);
            return ms.ToArray();
        }
        public void ToPacket(System.IO.Stream stream)
        {
            System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
            writer.Write(Id);
            writer.Write(Name);
        }
        public static SerializerDemo.Person FromPacket(byte[] data)
        {
            using var ms = new System.IO.MemoryStream(data);
            return FromPacket(ms);
        }
        public static SerializerDemo.Person FromPacket(System.IO.Stream stream)
        {
            SerializerDemo.Person result = new SerializerDemo.Person();
            System.IO.BinaryReader reader = new System.IO.BinaryReader(stream);
            int size = 0;
            byte[] buffer = null;
            result.Id = reader.ReadInt16();
            result.Name = reader.ReadString();
            return result;
        }
    }
}

Code and pdf at

https://ignatandrei.github.io/RSCG_Examples/v2/docs/GenPack

Andrei Ignat weekly software news(mostly .NET)

* indicates required

Please select all the ways you would like to hear from me:

You can unsubscribe at any time by clicking the link in the footer of our emails. For information about our privacy practices, please visit our website.

We use Mailchimp as our marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp's privacy practices here.