From 26e629b7db507a106123906e62d0855eda2f5b73 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 9 Jul 2025 02:58:20 +0000
Subject: [PATCH 1/5] Initial plan
From e95850b3a9216e74739750476a5197153964f998 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 17 Jul 2025 01:16:31 +0000
Subject: [PATCH 2/5] Implement Central Package Management
Co-authored-by: KyleMcMaster <11415127+KyleMcMaster@users.noreply.github.com>
---
Directory.Packages.props | 22 ++
.../Microsoft.eShopWeb.Web.fsproj | 6 +-
src/Microsoft.eShopWeb.Web/packages.lock.json | 244 ------------
tests/FShopOnWeb.Tests.fsproj | 12 +-
tests/packages.lock.json | 367 ------------------
5 files changed, 31 insertions(+), 620 deletions(-)
create mode 100644 Directory.Packages.props
delete mode 100644 src/Microsoft.eShopWeb.Web/packages.lock.json
delete mode 100644 tests/packages.lock.json
diff --git a/Directory.Packages.props b/Directory.Packages.props
new file mode 100644
index 0000000..fdc0e6a
--- /dev/null
+++ b/Directory.Packages.props
@@ -0,0 +1,22 @@
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Microsoft.eShopWeb.Web/Microsoft.eShopWeb.Web.fsproj b/src/Microsoft.eShopWeb.Web/Microsoft.eShopWeb.Web.fsproj
index fcaad0f..63c6d28 100644
--- a/src/Microsoft.eShopWeb.Web/Microsoft.eShopWeb.Web.fsproj
+++ b/src/Microsoft.eShopWeb.Web/Microsoft.eShopWeb.Web.fsproj
@@ -22,8 +22,8 @@
-
-
-
+
+
+
diff --git a/src/Microsoft.eShopWeb.Web/packages.lock.json b/src/Microsoft.eShopWeb.Web/packages.lock.json
deleted file mode 100644
index b45c10f..0000000
--- a/src/Microsoft.eShopWeb.Web/packages.lock.json
+++ /dev/null
@@ -1,244 +0,0 @@
-{
- "version": 1,
- "dependencies": {
- "net9.0": {
- "EntityFrameworkCore.FSharp": {
- "type": "Direct",
- "requested": "[6.0.7, )",
- "resolved": "6.0.7",
- "contentHash": "TeHeXBlrVjUC55q7YnWXieBSNVoHAagykATm2By6RBgn1DNxXtU9jazP0lJ3MigOaTygto4fR2TB9YbAAUYcFg==",
- "dependencies": {
- "FSharp.Core": "6.0.1",
- "Microsoft.EntityFrameworkCore.Design": "6.0.0"
- }
- },
- "Falco": {
- "type": "Direct",
- "requested": "[4.0.6, )",
- "resolved": "4.0.6",
- "contentHash": "EbXhnwdalKEGVBwYctYmh1QpgWs/0zJ37CNtSWwt5mmj1Xk6bNTJhyU55ppiF3HFnXRia3iJEc4x6okWoNnx2Q==",
- "dependencies": {
- "FSharp.Core": "6.0.0",
- "Falco.Markup": "1.0.2"
- }
- },
- "FSharp.Core": {
- "type": "Direct",
- "requested": "[9.0.300, )",
- "resolved": "9.0.300",
- "contentHash": "TVt2J7RCE1KCS2IaONF+p8/KIZ1eHNbW+7qmKF6hGoD4tXl+o07ja1mPtFjMqRa5uHMFaTrGTPn/m945WnDLiQ=="
- },
- "Microsoft.EntityFrameworkCore.Sqlite": {
- "type": "Direct",
- "requested": "[9.0.6, )",
- "resolved": "9.0.6",
- "contentHash": "bVSdfFrqIo3ZeQfWYYfnVVanP1GWghkdw+MnEmZJz7jUwtdPQpBKHr0BW9dMizPamzU+SMA1Qu4nXuRTlKVAGQ==",
- "dependencies": {
- "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.6",
- "Microsoft.Extensions.DependencyModel": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6",
- "SQLitePCLRaw.bundle_e_sqlite3": "2.1.10",
- "SQLitePCLRaw.core": "2.1.10",
- "System.Text.Json": "9.0.6"
- }
- },
- "Falco.Markup": {
- "type": "Transitive",
- "resolved": "1.0.2",
- "contentHash": "MbAUvgmPJc+JVawHwlPf4v3ql5E7BIUBkqvSi+6U6j2PDvBWbuB76u+O7ZLN86Jp9hbtaDNizO8L0AGRbAO20Q==",
- "dependencies": {
- "FSharp.Core": "4.5.2"
- }
- },
- "Humanizer.Core": {
- "type": "Transitive",
- "resolved": "2.8.26",
- "contentHash": "OiKusGL20vby4uDEswj2IgkdchC1yQ6rwbIkZDVBPIR6al2b7n3pC91elBul9q33KaBgRKhbZH3+2Ur4fnWx2A=="
- },
- "Microsoft.Data.Sqlite.Core": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "3auiudiViGzj1TidUdjuDqtP3+f6PBk4xdw6r9sBaTtkYoGc3AZn0cP8LgYZaLRnJBqY5bXRLB+qhjoB+iATzA==",
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.10"
- }
- },
- "Microsoft.EntityFrameworkCore": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "r5hzM6Bhw4X3z28l5vmsaCPjk9VsQP4zaaY01THh1SAYjgTMVadYIvpNkCfmrv/Klks6aIf2A9eY7cpGZab/hg==",
- "dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "9.0.6",
- "Microsoft.EntityFrameworkCore.Analyzers": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6"
- }
- },
- "Microsoft.EntityFrameworkCore.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "7MkhPK8emb8hfOx/mFVvHuIHxQ+mH2YdlK4sFUXgsGlvR0A44vsmd2wcHavZOTTzaKhN+aFUVy3zmkztKmTo+A=="
- },
- "Microsoft.EntityFrameworkCore.Analyzers": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "VKggHNQC5FCn3/vooaIM/4aEjGmrmWm78IrdRLz9lLV0Rm9bVHEr/jiWApDkU0U9ec2xGAilvQqJ5mMX7QC2cw=="
- },
- "Microsoft.EntityFrameworkCore.Design": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "RFdomymyuPNffl+VPk7osdxCJQ0xlGuxr28ifdfFFNUaMK0OYiJOjr6w9z3kscOM2p2gdPWNI1IFUXllEyphow==",
- "dependencies": {
- "Humanizer.Core": "2.8.26",
- "Microsoft.EntityFrameworkCore.Relational": "6.0.0"
- }
- },
- "Microsoft.EntityFrameworkCore.Relational": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "Ht6OT17sYnO31Dx+hX72YHrc5kZt53g5napaw0FpyIekXCvb+gUVvufEG55Fa7taFm8ccy0Vzs+JVNR9NL0JlA==",
- "dependencies": {
- "Microsoft.EntityFrameworkCore": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6"
- }
- },
- "Microsoft.EntityFrameworkCore.Sqlite.Core": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "xP+SvMDR/GZCDNXFw7z4WYbO2sYpECvht3+lqejg+Md8vLtURwTBvdsOUAnY4jBGmNFqHeh87hZSmUGmuxyqMA==",
- "dependencies": {
- "Microsoft.Data.Sqlite.Core": "9.0.6",
- "Microsoft.EntityFrameworkCore.Relational": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.6",
- "Microsoft.Extensions.DependencyModel": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6",
- "SQLitePCLRaw.core": "2.1.10",
- "System.Text.Json": "9.0.6"
- }
- },
- "Microsoft.Extensions.Caching.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "bL/xQsVNrdVkzjP5yjX4ndkQ03H3+Bk3qPpl+AMCEJR2RkfgAYmoQ/xXffPV7is64+QHShnhA12YAaFmNbfM+A==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.Caching.Memory": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "qPW2d798tBPZcRmrlaBJqyChf2+0odDdE+0Lxvrr0ywkSNl1oNMK8AKrOfDwyXyjuLCv0ua7p6nrUExCeXhCcg==",
- "dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "9.0.6",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.6",
- "Microsoft.Extensions.Options": "9.0.6",
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "3GgMIi2jP8g1fBW93Z9b9Unamc0SIsgyhiCmC91gq4loTixK9vQMuxxUsfJ1kRGwn+/FqLKwOHqmn0oYWn3Fvw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.DependencyInjection": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "vS65HMo5RS10DD543fknsyVDxihMcVxVn3/hNaILgBxWYnOLxWIeCIO9X0QFuCvPRNjClvXe9Aj8KaQNx7vFkQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6"
- }
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "0Zn6nR/6g+90MxskZyOOMPQvnPnrrGu6bytPwkV+azDcTtCSuQ1+GJUrg8Klmnrjk1i6zMpw2lXijl+tw7Q3kA=="
- },
- "Microsoft.Extensions.DependencyModel": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "grVU1ixgMHp+kuhIgvEzhE73jXRY6XmxNBPWrotmbjB9AvJvkwHnIzm1JlOsPpyixFgnzreh/bFBMJAjveX+fQ=="
- },
- "Microsoft.Extensions.Logging": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "XBzjitTFaQhF8EbJ645vblZezV1p52ePTxKHoVkRidHF11Xkjxg94qr0Rvp2qyxK2vBJ4OIZ41NB15YUyxTGMQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection": "9.0.6",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.6",
- "Microsoft.Extensions.Options": "9.0.6"
- }
- },
- "Microsoft.Extensions.Logging.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "LFnyBNK7WtFmKdnHu3v0HOYQ8BcjYuy0jdC9pgCJ/rbLKoJEG9/dBzSKMEeeWDbDeoWS0TIxOC8a9CM5ufca3A==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6"
- }
- },
- "Microsoft.Extensions.Options": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "wUPhNM1zsI58Dy10xRdF2+pnsisiUuETg5ZBncyAEEUm/CQ9Q1vmivyUWH8RDbAlqyixf2dJNQ2XZb7HsKUEQw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6",
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.Primitives": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "BHniU24QV67qp1pJknqYSofAPYGmijGI8D+ci9yfw33iuFdyOeB9lWTg78ThyYLyQwZw3s0vZ36VMb0MqbUuLw=="
- },
- "SQLitePCLRaw.bundle_e_sqlite3": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "UxWuisvZ3uVcVOLJQv7urM/JiQH+v3TmaJc1BLKl5Dxfm/nTzTUrqswCqg/INiYLi61AXnHo1M1JPmPqqLnAdg==",
- "dependencies": {
- "SQLitePCLRaw.lib.e_sqlite3": "2.1.10",
- "SQLitePCLRaw.provider.e_sqlite3": "2.1.10"
- }
- },
- "SQLitePCLRaw.core": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "Ii8JCbC7oiVclaE/mbDEK000EFIJ+ShRPwAvvV89GOZhQ+ZLtlnSWl6ksCNMKu/VGXA4Nfi2B7LhN/QFN9oBcw==",
- "dependencies": {
- "System.Memory": "4.5.3"
- }
- },
- "SQLitePCLRaw.lib.e_sqlite3": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "mAr69tDbnf3QJpRy2nJz8Qdpebdil00fvycyByR58Cn9eARvR+UiG2Vzsp+4q1tV3ikwiYIjlXCQFc12GfebbA=="
- },
- "SQLitePCLRaw.provider.e_sqlite3": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "uZVTi02C1SxqzgT0HqTWatIbWGb40iIkfc3FpFCpE/r7g6K0PqzDUeefL6P6HPhDtc6BacN3yQysfzP7ks+wSQ==",
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.10"
- }
- },
- "System.Memory": {
- "type": "Transitive",
- "resolved": "4.5.3",
- "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA=="
- },
- "System.Text.Json": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "h+ZtYTyTnTh5Ju6mHCKb3FPGx4ylJZgm9W7Y2psUnkhQRPMOIxX+TCN0ZgaR/+Yea+93XHWAaMzYTar1/EHIPg=="
- }
- }
- }
-}
\ No newline at end of file
diff --git a/tests/FShopOnWeb.Tests.fsproj b/tests/FShopOnWeb.Tests.fsproj
index 88f719e..ec2efd0 100644
--- a/tests/FShopOnWeb.Tests.fsproj
+++ b/tests/FShopOnWeb.Tests.fsproj
@@ -12,12 +12,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/tests/packages.lock.json b/tests/packages.lock.json
deleted file mode 100644
index 1da65ff..0000000
--- a/tests/packages.lock.json
+++ /dev/null
@@ -1,367 +0,0 @@
-{
- "version": 1,
- "dependencies": {
- "net9.0": {
- "coverlet.collector": {
- "type": "Direct",
- "requested": "[6.0.2, )",
- "resolved": "6.0.2",
- "contentHash": "bJShQ6uWRTQ100ZeyiMqcFlhP7WJ+bCuabUs885dJiBEzMsJMSFr7BOyeCw4rgvQokteGi5rKQTlkhfQPUXg2A=="
- },
- "EntityFrameworkCore.FSharp": {
- "type": "Direct",
- "requested": "[6.0.7, )",
- "resolved": "6.0.7",
- "contentHash": "TeHeXBlrVjUC55q7YnWXieBSNVoHAagykATm2By6RBgn1DNxXtU9jazP0lJ3MigOaTygto4fR2TB9YbAAUYcFg==",
- "dependencies": {
- "FSharp.Core": "6.0.1",
- "Microsoft.EntityFrameworkCore.Design": "6.0.0"
- }
- },
- "FSharp.Core": {
- "type": "Direct",
- "requested": "[9.0.300, )",
- "resolved": "9.0.300",
- "contentHash": "TVt2J7RCE1KCS2IaONF+p8/KIZ1eHNbW+7qmKF6hGoD4tXl+o07ja1mPtFjMqRa5uHMFaTrGTPn/m945WnDLiQ=="
- },
- "Microsoft.EntityFrameworkCore.InMemory": {
- "type": "Direct",
- "requested": "[9.0.0, )",
- "resolved": "9.0.0",
- "contentHash": "Pm4NBnv3aB8O5bBNwWRkL4a/H+3WdgKRKYD93FkR9TrUNb0jfns9JVN5w9WEUsQCm0C69Eg2Y85i8pdmSfaNnQ==",
- "dependencies": {
- "Microsoft.EntityFrameworkCore": "9.0.0",
- "Microsoft.Extensions.Caching.Memory": "9.0.0",
- "Microsoft.Extensions.Logging": "9.0.0"
- }
- },
- "Microsoft.NET.Test.Sdk": {
- "type": "Direct",
- "requested": "[17.12.0, )",
- "resolved": "17.12.0",
- "contentHash": "kt/PKBZ91rFCWxVIJZSgVLk+YR+4KxTuHf799ho8WNiK5ZQpJNAEZCAWX86vcKrs+DiYjiibpYKdGZP6+/N17w==",
- "dependencies": {
- "Microsoft.CodeCoverage": "17.12.0",
- "Microsoft.TestPlatform.TestHost": "17.12.0"
- }
- },
- "xunit": {
- "type": "Direct",
- "requested": "[2.9.2, )",
- "resolved": "2.9.2",
- "contentHash": "7LhFS2N9Z6Xgg8aE5lY95cneYivRMfRI8v+4PATa4S64D5Z/Plkg0qa8dTRHSiGRgVZ/CL2gEfJDE5AUhOX+2Q==",
- "dependencies": {
- "xunit.analyzers": "1.16.0",
- "xunit.assert": "2.9.2",
- "xunit.core": "[2.9.2]"
- }
- },
- "xunit.runner.visualstudio": {
- "type": "Direct",
- "requested": "[2.8.2, )",
- "resolved": "2.8.2",
- "contentHash": "vm1tbfXhFmjFMUmS4M0J0ASXz3/U5XvXBa6DOQUL3fEz4Vt6YPhv+ESCarx6M6D+9kJkJYZKCNvJMas1+nVfmQ=="
- },
- "Falco": {
- "type": "Transitive",
- "resolved": "4.0.6",
- "contentHash": "EbXhnwdalKEGVBwYctYmh1QpgWs/0zJ37CNtSWwt5mmj1Xk6bNTJhyU55ppiF3HFnXRia3iJEc4x6okWoNnx2Q==",
- "dependencies": {
- "FSharp.Core": "6.0.0",
- "Falco.Markup": "1.0.2"
- }
- },
- "Falco.Markup": {
- "type": "Transitive",
- "resolved": "1.0.2",
- "contentHash": "MbAUvgmPJc+JVawHwlPf4v3ql5E7BIUBkqvSi+6U6j2PDvBWbuB76u+O7ZLN86Jp9hbtaDNizO8L0AGRbAO20Q==",
- "dependencies": {
- "FSharp.Core": "4.5.2"
- }
- },
- "Humanizer.Core": {
- "type": "Transitive",
- "resolved": "2.8.26",
- "contentHash": "OiKusGL20vby4uDEswj2IgkdchC1yQ6rwbIkZDVBPIR6al2b7n3pC91elBul9q33KaBgRKhbZH3+2Ur4fnWx2A=="
- },
- "Microsoft.CodeCoverage": {
- "type": "Transitive",
- "resolved": "17.12.0",
- "contentHash": "4svMznBd5JM21JIG2xZKGNanAHNXplxf/kQDFfLHXQ3OnpJkayRK/TjacFjA+EYmoyuNXHo/sOETEfcYtAzIrA=="
- },
- "Microsoft.Data.Sqlite.Core": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "3auiudiViGzj1TidUdjuDqtP3+f6PBk4xdw6r9sBaTtkYoGc3AZn0cP8LgYZaLRnJBqY5bXRLB+qhjoB+iATzA==",
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.10"
- }
- },
- "Microsoft.EntityFrameworkCore": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "r5hzM6Bhw4X3z28l5vmsaCPjk9VsQP4zaaY01THh1SAYjgTMVadYIvpNkCfmrv/Klks6aIf2A9eY7cpGZab/hg==",
- "dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "9.0.6",
- "Microsoft.EntityFrameworkCore.Analyzers": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6"
- }
- },
- "Microsoft.EntityFrameworkCore.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "7MkhPK8emb8hfOx/mFVvHuIHxQ+mH2YdlK4sFUXgsGlvR0A44vsmd2wcHavZOTTzaKhN+aFUVy3zmkztKmTo+A=="
- },
- "Microsoft.EntityFrameworkCore.Analyzers": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "VKggHNQC5FCn3/vooaIM/4aEjGmrmWm78IrdRLz9lLV0Rm9bVHEr/jiWApDkU0U9ec2xGAilvQqJ5mMX7QC2cw=="
- },
- "Microsoft.EntityFrameworkCore.Design": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "RFdomymyuPNffl+VPk7osdxCJQ0xlGuxr28ifdfFFNUaMK0OYiJOjr6w9z3kscOM2p2gdPWNI1IFUXllEyphow==",
- "dependencies": {
- "Humanizer.Core": "2.8.26",
- "Microsoft.EntityFrameworkCore.Relational": "6.0.0"
- }
- },
- "Microsoft.EntityFrameworkCore.Relational": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "Ht6OT17sYnO31Dx+hX72YHrc5kZt53g5napaw0FpyIekXCvb+gUVvufEG55Fa7taFm8ccy0Vzs+JVNR9NL0JlA==",
- "dependencies": {
- "Microsoft.EntityFrameworkCore": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6"
- }
- },
- "Microsoft.EntityFrameworkCore.Sqlite": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "bVSdfFrqIo3ZeQfWYYfnVVanP1GWghkdw+MnEmZJz7jUwtdPQpBKHr0BW9dMizPamzU+SMA1Qu4nXuRTlKVAGQ==",
- "dependencies": {
- "Microsoft.EntityFrameworkCore.Sqlite.Core": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.6",
- "Microsoft.Extensions.DependencyModel": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6",
- "SQLitePCLRaw.bundle_e_sqlite3": "2.1.10",
- "SQLitePCLRaw.core": "2.1.10",
- "System.Text.Json": "9.0.6"
- }
- },
- "Microsoft.EntityFrameworkCore.Sqlite.Core": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "xP+SvMDR/GZCDNXFw7z4WYbO2sYpECvht3+lqejg+Md8vLtURwTBvdsOUAnY4jBGmNFqHeh87hZSmUGmuxyqMA==",
- "dependencies": {
- "Microsoft.Data.Sqlite.Core": "9.0.6",
- "Microsoft.EntityFrameworkCore.Relational": "9.0.6",
- "Microsoft.Extensions.Caching.Memory": "9.0.6",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.6",
- "Microsoft.Extensions.DependencyModel": "9.0.6",
- "Microsoft.Extensions.Logging": "9.0.6",
- "SQLitePCLRaw.core": "2.1.10",
- "System.Text.Json": "9.0.6"
- }
- },
- "Microsoft.Extensions.Caching.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "bL/xQsVNrdVkzjP5yjX4ndkQ03H3+Bk3qPpl+AMCEJR2RkfgAYmoQ/xXffPV7is64+QHShnhA12YAaFmNbfM+A==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.Caching.Memory": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "qPW2d798tBPZcRmrlaBJqyChf2+0odDdE+0Lxvrr0ywkSNl1oNMK8AKrOfDwyXyjuLCv0ua7p6nrUExCeXhCcg==",
- "dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "9.0.6",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.6",
- "Microsoft.Extensions.Options": "9.0.6",
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "3GgMIi2jP8g1fBW93Z9b9Unamc0SIsgyhiCmC91gq4loTixK9vQMuxxUsfJ1kRGwn+/FqLKwOHqmn0oYWn3Fvw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.DependencyInjection": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "vS65HMo5RS10DD543fknsyVDxihMcVxVn3/hNaILgBxWYnOLxWIeCIO9X0QFuCvPRNjClvXe9Aj8KaQNx7vFkQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6"
- }
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "0Zn6nR/6g+90MxskZyOOMPQvnPnrrGu6bytPwkV+azDcTtCSuQ1+GJUrg8Klmnrjk1i6zMpw2lXijl+tw7Q3kA=="
- },
- "Microsoft.Extensions.DependencyModel": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "grVU1ixgMHp+kuhIgvEzhE73jXRY6XmxNBPWrotmbjB9AvJvkwHnIzm1JlOsPpyixFgnzreh/bFBMJAjveX+fQ=="
- },
- "Microsoft.Extensions.Logging": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "XBzjitTFaQhF8EbJ645vblZezV1p52ePTxKHoVkRidHF11Xkjxg94qr0Rvp2qyxK2vBJ4OIZ41NB15YUyxTGMQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection": "9.0.6",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.6",
- "Microsoft.Extensions.Options": "9.0.6"
- }
- },
- "Microsoft.Extensions.Logging.Abstractions": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "LFnyBNK7WtFmKdnHu3v0HOYQ8BcjYuy0jdC9pgCJ/rbLKoJEG9/dBzSKMEeeWDbDeoWS0TIxOC8a9CM5ufca3A==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6"
- }
- },
- "Microsoft.Extensions.Options": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "wUPhNM1zsI58Dy10xRdF2+pnsisiUuETg5ZBncyAEEUm/CQ9Q1vmivyUWH8RDbAlqyixf2dJNQ2XZb7HsKUEQw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6",
- "Microsoft.Extensions.Primitives": "9.0.6"
- }
- },
- "Microsoft.Extensions.Primitives": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "BHniU24QV67qp1pJknqYSofAPYGmijGI8D+ci9yfw33iuFdyOeB9lWTg78ThyYLyQwZw3s0vZ36VMb0MqbUuLw=="
- },
- "Microsoft.TestPlatform.ObjectModel": {
- "type": "Transitive",
- "resolved": "17.12.0",
- "contentHash": "TDqkTKLfQuAaPcEb3pDDWnh7b3SyZF+/W9OZvWFp6eJCIiiYFdSB6taE2I6tWrFw5ywhzOb6sreoGJTI6m3rSQ==",
- "dependencies": {
- "System.Reflection.Metadata": "1.6.0"
- }
- },
- "Microsoft.TestPlatform.TestHost": {
- "type": "Transitive",
- "resolved": "17.12.0",
- "contentHash": "MiPEJQNyADfwZ4pJNpQex+t9/jOClBGMiCiVVFuELCMSX2nmNfvUor3uFVxNNCg30uxDP8JDYfPnMXQzsfzYyg==",
- "dependencies": {
- "Microsoft.TestPlatform.ObjectModel": "17.12.0",
- "Newtonsoft.Json": "13.0.1"
- }
- },
- "Newtonsoft.Json": {
- "type": "Transitive",
- "resolved": "13.0.1",
- "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
- },
- "SQLitePCLRaw.bundle_e_sqlite3": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "UxWuisvZ3uVcVOLJQv7urM/JiQH+v3TmaJc1BLKl5Dxfm/nTzTUrqswCqg/INiYLi61AXnHo1M1JPmPqqLnAdg==",
- "dependencies": {
- "SQLitePCLRaw.lib.e_sqlite3": "2.1.10",
- "SQLitePCLRaw.provider.e_sqlite3": "2.1.10"
- }
- },
- "SQLitePCLRaw.core": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "Ii8JCbC7oiVclaE/mbDEK000EFIJ+ShRPwAvvV89GOZhQ+ZLtlnSWl6ksCNMKu/VGXA4Nfi2B7LhN/QFN9oBcw==",
- "dependencies": {
- "System.Memory": "4.5.3"
- }
- },
- "SQLitePCLRaw.lib.e_sqlite3": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "mAr69tDbnf3QJpRy2nJz8Qdpebdil00fvycyByR58Cn9eARvR+UiG2Vzsp+4q1tV3ikwiYIjlXCQFc12GfebbA=="
- },
- "SQLitePCLRaw.provider.e_sqlite3": {
- "type": "Transitive",
- "resolved": "2.1.10",
- "contentHash": "uZVTi02C1SxqzgT0HqTWatIbWGb40iIkfc3FpFCpE/r7g6K0PqzDUeefL6P6HPhDtc6BacN3yQysfzP7ks+wSQ==",
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.10"
- }
- },
- "System.Memory": {
- "type": "Transitive",
- "resolved": "4.5.3",
- "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA=="
- },
- "System.Reflection.Metadata": {
- "type": "Transitive",
- "resolved": "1.6.0",
- "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
- },
- "System.Text.Json": {
- "type": "Transitive",
- "resolved": "9.0.6",
- "contentHash": "h+ZtYTyTnTh5Ju6mHCKb3FPGx4ylJZgm9W7Y2psUnkhQRPMOIxX+TCN0ZgaR/+Yea+93XHWAaMzYTar1/EHIPg=="
- },
- "xunit.abstractions": {
- "type": "Transitive",
- "resolved": "2.0.3",
- "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg=="
- },
- "xunit.analyzers": {
- "type": "Transitive",
- "resolved": "1.16.0",
- "contentHash": "hptYM7vGr46GUIgZt21YHO4rfuBAQS2eINbFo16CV/Dqq+24Tp+P5gDCACu1AbFfW4Sp/WRfDPSK8fmUUb8s0Q=="
- },
- "xunit.assert": {
- "type": "Transitive",
- "resolved": "2.9.2",
- "contentHash": "QkNBAQG4pa66cholm28AxijBjrmki98/vsEh4Sx5iplzotvPgpiotcxqJQMRC8d7RV7nIT8ozh97957hDnZwsQ=="
- },
- "xunit.core": {
- "type": "Transitive",
- "resolved": "2.9.2",
- "contentHash": "O6RrNSdmZ0xgEn5kT927PNwog5vxTtKrWMihhhrT0Sg9jQ7iBDciYOwzBgP2krBEk5/GBXI18R1lKvmnxGcb4w==",
- "dependencies": {
- "xunit.extensibility.core": "[2.9.2]",
- "xunit.extensibility.execution": "[2.9.2]"
- }
- },
- "xunit.extensibility.core": {
- "type": "Transitive",
- "resolved": "2.9.2",
- "contentHash": "Ol+KlBJz1x8BrdnhN2DeOuLrr1I/cTwtHCggL9BvYqFuVd/TUSzxNT5O0NxCIXth30bsKxgMfdqLTcORtM52yQ==",
- "dependencies": {
- "xunit.abstractions": "2.0.3"
- }
- },
- "xunit.extensibility.execution": {
- "type": "Transitive",
- "resolved": "2.9.2",
- "contentHash": "rKMpq4GsIUIJibXuZoZ8lYp5EpROlnYaRpwu9Zr0sRZXE7JqJfEEbCsUriZqB+ByXCLFBJyjkTRULMdC+U566g==",
- "dependencies": {
- "xunit.extensibility.core": "[2.9.2]"
- }
- },
- "microsoft.eshopweb.web": {
- "type": "Project",
- "dependencies": {
- "EntityFrameworkCore.FSharp": "[6.0.7, )",
- "FSharp.Core": "[9.0.300, )",
- "Falco": "[4.0.6, )",
- "Microsoft.EntityFrameworkCore.Sqlite": "[9.0.6, )"
- }
- }
- }
- }
-}
\ No newline at end of file
From 5fb439137cac9f12017c47595c3a713dfaaca053 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 17 Jul 2025 01:20:18 +0000
Subject: [PATCH 3/5] Add documentation and tests for Central Package
Management
Co-authored-by: KyleMcMaster <11415127+KyleMcMaster@users.noreply.github.com>
---
README.md | 29 ++
src/Microsoft.eShopWeb.Web/packages.lock.json | 225 ++++++++++++
tests/CentralPackageManagementTests.fs | 35 ++
tests/FShopOnWeb.Tests.fsproj | 1 +
tests/packages.lock.json | 347 ++++++++++++++++++
5 files changed, 637 insertions(+)
create mode 100644 src/Microsoft.eShopWeb.Web/packages.lock.json
create mode 100644 tests/CentralPackageManagementTests.fs
create mode 100644 tests/packages.lock.json
diff --git a/README.md b/README.md
index e82ae35..be17a1d 100644
--- a/README.md
+++ b/README.md
@@ -50,6 +50,35 @@ This will add the SQLite Explorer tray under the File Explorer where you can ini

+## Package Management
+
+This project uses [Central Package Management](https://docs.microsoft.com/en-us/nuget/consume-packages/central-package-management) to streamline dependency management and ensure consistent package versions across all projects.
+
+### How it works
+
+- Package versions are centrally defined in `Directory.Packages.props`
+- Individual project files (`*.fsproj`) reference packages without version attributes
+- All projects in the solution automatically use the centrally managed versions
+- Lock files (`packages.lock.json`) ensure reproducible builds across different environments
+
+### Benefits
+
+- **Consistency**: All projects use the same package versions
+- **Maintainability**: Update package versions in one place
+- **Reduced conflicts**: Eliminates version mismatches between projects
+- **Simplified updates**: Easier to upgrade packages across the entire solution
+
+### Adding new packages
+
+1. Add the package version to `Directory.Packages.props`:
+ ```xml
+
+ ```
+2. Reference the package in your project file without a version:
+ ```xml
+
+ ```
+
## Related Projects and Inspiration
- [eShopOnWeb](https://github.com/dotnet-architecture/eShopOnWeb)
diff --git a/src/Microsoft.eShopWeb.Web/packages.lock.json b/src/Microsoft.eShopWeb.Web/packages.lock.json
new file mode 100644
index 0000000..e263667
--- /dev/null
+++ b/src/Microsoft.eShopWeb.Web/packages.lock.json
@@ -0,0 +1,225 @@
+{
+ "version": 2,
+ "dependencies": {
+ "net8.0": {
+ "EntityFrameworkCore.FSharp": {
+ "type": "Direct",
+ "requested": "[6.0.7, )",
+ "resolved": "6.0.7",
+ "contentHash": "TeHeXBlrVjUC55q7YnWXieBSNVoHAagykATm2By6RBgn1DNxXtU9jazP0lJ3MigOaTygto4fR2TB9YbAAUYcFg==",
+ "dependencies": {
+ "FSharp.Core": "6.0.1",
+ "Microsoft.EntityFrameworkCore.Design": "6.0.0"
+ }
+ },
+ "Falco": {
+ "type": "Direct",
+ "requested": "[4.0.6, )",
+ "resolved": "4.0.6",
+ "contentHash": "EbXhnwdalKEGVBwYctYmh1QpgWs/0zJ37CNtSWwt5mmj1Xk6bNTJhyU55ppiF3HFnXRia3iJEc4x6okWoNnx2Q==",
+ "dependencies": {
+ "FSharp.Core": "6.0.0",
+ "Falco.Markup": "1.0.2"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Sqlite": {
+ "type": "Direct",
+ "requested": "[8.0.10, )",
+ "resolved": "8.0.10",
+ "contentHash": "inVXiKuOczjNVpLKG0nsnUmgL2m/bo6H/p4DCFVGRImJj6p9qrlwnU96A5FNZ56BF9VE1uZOULqgGTGTFVS19A==",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.10",
+ "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
+ }
+ },
+ "Falco.Markup": {
+ "type": "Transitive",
+ "resolved": "1.0.2",
+ "contentHash": "MbAUvgmPJc+JVawHwlPf4v3ql5E7BIUBkqvSi+6U6j2PDvBWbuB76u+O7ZLN86Jp9hbtaDNizO8L0AGRbAO20Q==",
+ "dependencies": {
+ "FSharp.Core": "4.5.2"
+ }
+ },
+ "FSharp.Core": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "VrFAiW8dEEekk+0aqlbvMNZzDvYXmgWZwAt68AUBqaWK8RnoEVUNglj66bZzhs4/U63q0EfXlhcEKnH1sTYLjw=="
+ },
+ "Humanizer.Core": {
+ "type": "Transitive",
+ "resolved": "2.8.26",
+ "contentHash": "OiKusGL20vby4uDEswj2IgkdchC1yQ6rwbIkZDVBPIR6al2b7n3pC91elBul9q33KaBgRKhbZH3+2Ur4fnWx2A=="
+ },
+ "Microsoft.Data.Sqlite.Core": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "i95bgLqp6rJzmhQEtGhVVHnk1nYAhr/pLDul676PnwI/d7uDSSGs2ZPU9aP0VOuppkZaNinQOUCrD7cstDbQiQ==",
+ "dependencies": {
+ "SQLitePCLRaw.core": "2.1.6"
+ }
+ },
+ "Microsoft.EntityFrameworkCore": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
+ "Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
+ "Microsoft.Extensions.Caching.Memory": "8.0.1",
+ "Microsoft.Extensions.Logging": "8.0.1"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg=="
+ },
+ "Microsoft.EntityFrameworkCore.Analyzers": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw=="
+ },
+ "Microsoft.EntityFrameworkCore.Design": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "RFdomymyuPNffl+VPk7osdxCJQ0xlGuxr28ifdfFFNUaMK0OYiJOjr6w9z3kscOM2p2gdPWNI1IFUXllEyphow==",
+ "dependencies": {
+ "Humanizer.Core": "2.8.26",
+ "Microsoft.EntityFrameworkCore.Relational": "6.0.0"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Relational": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore": "8.0.10",
+ "Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Sqlite.Core": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "dmpgFx5BPqw/jJmBh9gp0UJpCcNDvWnGMoc9XHwp4K0h9skBE6A8E7+AwSiz556iyVf8Gn/qxHF1cgX9ZqGiYQ==",
+ "dependencies": {
+ "Microsoft.Data.Sqlite.Core": "8.0.10",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.10",
+ "Microsoft.Extensions.DependencyModel": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.Caching.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "8.0.1",
+ "contentHash": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "8.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Options": "8.0.2",
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection": {
+ "type": "Transitive",
+ "resolved": "8.0.1",
+ "contentHash": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg=="
+ },
+ "Microsoft.Extensions.DependencyModel": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw=="
+ },
+ "Microsoft.Extensions.Logging": {
+ "type": "Transitive",
+ "resolved": "8.0.1",
+ "contentHash": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "8.0.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Options": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.Options": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.Primitives": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g=="
+ },
+ "SQLitePCLRaw.bundle_e_sqlite3": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
+ "dependencies": {
+ "SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
+ "SQLitePCLRaw.provider.e_sqlite3": "2.1.6"
+ }
+ },
+ "SQLitePCLRaw.core": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==",
+ "dependencies": {
+ "System.Memory": "4.5.3"
+ }
+ },
+ "SQLitePCLRaw.lib.e_sqlite3": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q=="
+ },
+ "SQLitePCLRaw.provider.e_sqlite3": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==",
+ "dependencies": {
+ "SQLitePCLRaw.core": "2.1.6"
+ }
+ },
+ "System.Memory": {
+ "type": "Transitive",
+ "resolved": "4.5.3",
+ "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA=="
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/CentralPackageManagementTests.fs b/tests/CentralPackageManagementTests.fs
new file mode 100644
index 0000000..1c64e56
--- /dev/null
+++ b/tests/CentralPackageManagementTests.fs
@@ -0,0 +1,35 @@
+module CentralPackageManagementTests
+
+open Xunit
+open System.IO
+
+[]
+let ``Central Package Management - Directory.Packages.props exists`` () =
+ // This test verifies that Central Package Management is properly configured
+ let solutionRoot = Path.Combine(__SOURCE_DIRECTORY__, "..")
+ let centralPkgFile = Path.Combine(solutionRoot, "Directory.Packages.props")
+ Assert.True(File.Exists(centralPkgFile), "Directory.Packages.props should exist for Central Package Management")
+
+[]
+let ``Central Package Management - Directory.Packages.props contains ManagePackageVersionsCentrally`` () =
+ // Verify the central package management is enabled
+ let solutionRoot = Path.Combine(__SOURCE_DIRECTORY__, "..")
+ let centralPkgFile = Path.Combine(solutionRoot, "Directory.Packages.props")
+ let content = File.ReadAllText(centralPkgFile)
+ Assert.Contains("ManagePackageVersionsCentrally", content)
+ Assert.Contains("true", content)
+
+[]
+let ``Central Package Management - Project files do not contain Version attributes`` () =
+ // Verify project files use central package management (no version attributes)
+ let solutionRoot = Path.Combine(__SOURCE_DIRECTORY__, "..")
+ let webProject = Path.Combine(solutionRoot, "src", "Microsoft.eShopWeb.Web", "Microsoft.eShopWeb.Web.fsproj")
+ let testProject = Path.Combine(solutionRoot, "tests", "FShopOnWeb.Tests.fsproj")
+
+ let webContent = File.ReadAllText(webProject)
+ let testContent = File.ReadAllText(testProject)
+
+ // Should not contain Version attributes in PackageReference elements
+ Assert.DoesNotContain("PackageReference Include=\"EntityFrameworkCore.FSharp\" Version=", webContent)
+ Assert.DoesNotContain("PackageReference Include=\"Falco\" Version=", webContent)
+ Assert.DoesNotContain("PackageReference Include=\"xunit\" Version=", testContent)
\ No newline at end of file
diff --git a/tests/FShopOnWeb.Tests.fsproj b/tests/FShopOnWeb.Tests.fsproj
index ec2efd0..010f798 100644
--- a/tests/FShopOnWeb.Tests.fsproj
+++ b/tests/FShopOnWeb.Tests.fsproj
@@ -8,6 +8,7 @@
+
diff --git a/tests/packages.lock.json b/tests/packages.lock.json
new file mode 100644
index 0000000..77e34f0
--- /dev/null
+++ b/tests/packages.lock.json
@@ -0,0 +1,347 @@
+{
+ "version": 2,
+ "dependencies": {
+ "net8.0": {
+ "coverlet.collector": {
+ "type": "Direct",
+ "requested": "[6.0.2, )",
+ "resolved": "6.0.2",
+ "contentHash": "bJShQ6uWRTQ100ZeyiMqcFlhP7WJ+bCuabUs885dJiBEzMsJMSFr7BOyeCw4rgvQokteGi5rKQTlkhfQPUXg2A=="
+ },
+ "EntityFrameworkCore.FSharp": {
+ "type": "Direct",
+ "requested": "[6.0.7, )",
+ "resolved": "6.0.7",
+ "contentHash": "TeHeXBlrVjUC55q7YnWXieBSNVoHAagykATm2By6RBgn1DNxXtU9jazP0lJ3MigOaTygto4fR2TB9YbAAUYcFg==",
+ "dependencies": {
+ "FSharp.Core": "6.0.1",
+ "Microsoft.EntityFrameworkCore.Design": "6.0.0"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.InMemory": {
+ "type": "Direct",
+ "requested": "[8.0.10, )",
+ "resolved": "8.0.10",
+ "contentHash": "TdtSEbBsMg8dFq5T1PiOv48w2oiiduNzaEf3Fa7tO2b3lTBFO1y1Dla6ihs628P53TowsScjLSG8g5ZEw6KN0Q==",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore": "8.0.10"
+ }
+ },
+ "Microsoft.NET.Test.Sdk": {
+ "type": "Direct",
+ "requested": "[17.12.0, )",
+ "resolved": "17.12.0",
+ "contentHash": "kt/PKBZ91rFCWxVIJZSgVLk+YR+4KxTuHf799ho8WNiK5ZQpJNAEZCAWX86vcKrs+DiYjiibpYKdGZP6+/N17w==",
+ "dependencies": {
+ "Microsoft.CodeCoverage": "17.12.0",
+ "Microsoft.TestPlatform.TestHost": "17.12.0"
+ }
+ },
+ "xunit": {
+ "type": "Direct",
+ "requested": "[2.9.2, )",
+ "resolved": "2.9.2",
+ "contentHash": "7LhFS2N9Z6Xgg8aE5lY95cneYivRMfRI8v+4PATa4S64D5Z/Plkg0qa8dTRHSiGRgVZ/CL2gEfJDE5AUhOX+2Q==",
+ "dependencies": {
+ "xunit.analyzers": "1.16.0",
+ "xunit.assert": "2.9.2",
+ "xunit.core": "[2.9.2]"
+ }
+ },
+ "xunit.runner.visualstudio": {
+ "type": "Direct",
+ "requested": "[2.8.2, )",
+ "resolved": "2.8.2",
+ "contentHash": "vm1tbfXhFmjFMUmS4M0J0ASXz3/U5XvXBa6DOQUL3fEz4Vt6YPhv+ESCarx6M6D+9kJkJYZKCNvJMas1+nVfmQ=="
+ },
+ "Falco.Markup": {
+ "type": "Transitive",
+ "resolved": "1.0.2",
+ "contentHash": "MbAUvgmPJc+JVawHwlPf4v3ql5E7BIUBkqvSi+6U6j2PDvBWbuB76u+O7ZLN86Jp9hbtaDNizO8L0AGRbAO20Q==",
+ "dependencies": {
+ "FSharp.Core": "4.5.2"
+ }
+ },
+ "FSharp.Core": {
+ "type": "Transitive",
+ "resolved": "6.0.1",
+ "contentHash": "VrFAiW8dEEekk+0aqlbvMNZzDvYXmgWZwAt68AUBqaWK8RnoEVUNglj66bZzhs4/U63q0EfXlhcEKnH1sTYLjw=="
+ },
+ "Humanizer.Core": {
+ "type": "Transitive",
+ "resolved": "2.8.26",
+ "contentHash": "OiKusGL20vby4uDEswj2IgkdchC1yQ6rwbIkZDVBPIR6al2b7n3pC91elBul9q33KaBgRKhbZH3+2Ur4fnWx2A=="
+ },
+ "Microsoft.CodeCoverage": {
+ "type": "Transitive",
+ "resolved": "17.12.0",
+ "contentHash": "4svMznBd5JM21JIG2xZKGNanAHNXplxf/kQDFfLHXQ3OnpJkayRK/TjacFjA+EYmoyuNXHo/sOETEfcYtAzIrA=="
+ },
+ "Microsoft.Data.Sqlite.Core": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "i95bgLqp6rJzmhQEtGhVVHnk1nYAhr/pLDul676PnwI/d7uDSSGs2ZPU9aP0VOuppkZaNinQOUCrD7cstDbQiQ==",
+ "dependencies": {
+ "SQLitePCLRaw.core": "2.1.6"
+ }
+ },
+ "Microsoft.EntityFrameworkCore": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
+ "Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
+ "Microsoft.Extensions.Caching.Memory": "8.0.1",
+ "Microsoft.Extensions.Logging": "8.0.1"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg=="
+ },
+ "Microsoft.EntityFrameworkCore.Analyzers": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw=="
+ },
+ "Microsoft.EntityFrameworkCore.Design": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "RFdomymyuPNffl+VPk7osdxCJQ0xlGuxr28ifdfFFNUaMK0OYiJOjr6w9z3kscOM2p2gdPWNI1IFUXllEyphow==",
+ "dependencies": {
+ "Humanizer.Core": "2.8.26",
+ "Microsoft.EntityFrameworkCore.Relational": "6.0.0"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Relational": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore": "8.0.10",
+ "Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Sqlite.Core": {
+ "type": "Transitive",
+ "resolved": "8.0.10",
+ "contentHash": "dmpgFx5BPqw/jJmBh9gp0UJpCcNDvWnGMoc9XHwp4K0h9skBE6A8E7+AwSiz556iyVf8Gn/qxHF1cgX9ZqGiYQ==",
+ "dependencies": {
+ "Microsoft.Data.Sqlite.Core": "8.0.10",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.10",
+ "Microsoft.Extensions.DependencyModel": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.Caching.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.Caching.Memory": {
+ "type": "Transitive",
+ "resolved": "8.0.1",
+ "contentHash": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
+ "dependencies": {
+ "Microsoft.Extensions.Caching.Abstractions": "8.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Options": "8.0.2",
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection": {
+ "type": "Transitive",
+ "resolved": "8.0.1",
+ "contentHash": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg=="
+ },
+ "Microsoft.Extensions.DependencyModel": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw=="
+ },
+ "Microsoft.Extensions.Logging": {
+ "type": "Transitive",
+ "resolved": "8.0.1",
+ "contentHash": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "8.0.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Options": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ }
+ },
+ "Microsoft.Extensions.Options": {
+ "type": "Transitive",
+ "resolved": "8.0.2",
+ "contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
+ "Microsoft.Extensions.Primitives": "8.0.0"
+ }
+ },
+ "Microsoft.Extensions.Primitives": {
+ "type": "Transitive",
+ "resolved": "8.0.0",
+ "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g=="
+ },
+ "Microsoft.TestPlatform.ObjectModel": {
+ "type": "Transitive",
+ "resolved": "17.12.0",
+ "contentHash": "TDqkTKLfQuAaPcEb3pDDWnh7b3SyZF+/W9OZvWFp6eJCIiiYFdSB6taE2I6tWrFw5ywhzOb6sreoGJTI6m3rSQ==",
+ "dependencies": {
+ "System.Reflection.Metadata": "1.6.0"
+ }
+ },
+ "Microsoft.TestPlatform.TestHost": {
+ "type": "Transitive",
+ "resolved": "17.12.0",
+ "contentHash": "MiPEJQNyADfwZ4pJNpQex+t9/jOClBGMiCiVVFuELCMSX2nmNfvUor3uFVxNNCg30uxDP8JDYfPnMXQzsfzYyg==",
+ "dependencies": {
+ "Microsoft.TestPlatform.ObjectModel": "17.12.0",
+ "Newtonsoft.Json": "13.0.1"
+ }
+ },
+ "Newtonsoft.Json": {
+ "type": "Transitive",
+ "resolved": "13.0.1",
+ "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
+ },
+ "SQLitePCLRaw.bundle_e_sqlite3": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
+ "dependencies": {
+ "SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
+ "SQLitePCLRaw.provider.e_sqlite3": "2.1.6"
+ }
+ },
+ "SQLitePCLRaw.core": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==",
+ "dependencies": {
+ "System.Memory": "4.5.3"
+ }
+ },
+ "SQLitePCLRaw.lib.e_sqlite3": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q=="
+ },
+ "SQLitePCLRaw.provider.e_sqlite3": {
+ "type": "Transitive",
+ "resolved": "2.1.6",
+ "contentHash": "PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==",
+ "dependencies": {
+ "SQLitePCLRaw.core": "2.1.6"
+ }
+ },
+ "System.Memory": {
+ "type": "Transitive",
+ "resolved": "4.5.3",
+ "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA=="
+ },
+ "System.Reflection.Metadata": {
+ "type": "Transitive",
+ "resolved": "1.6.0",
+ "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
+ },
+ "xunit.abstractions": {
+ "type": "Transitive",
+ "resolved": "2.0.3",
+ "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg=="
+ },
+ "xunit.analyzers": {
+ "type": "Transitive",
+ "resolved": "1.16.0",
+ "contentHash": "hptYM7vGr46GUIgZt21YHO4rfuBAQS2eINbFo16CV/Dqq+24Tp+P5gDCACu1AbFfW4Sp/WRfDPSK8fmUUb8s0Q=="
+ },
+ "xunit.assert": {
+ "type": "Transitive",
+ "resolved": "2.9.2",
+ "contentHash": "QkNBAQG4pa66cholm28AxijBjrmki98/vsEh4Sx5iplzotvPgpiotcxqJQMRC8d7RV7nIT8ozh97957hDnZwsQ=="
+ },
+ "xunit.core": {
+ "type": "Transitive",
+ "resolved": "2.9.2",
+ "contentHash": "O6RrNSdmZ0xgEn5kT927PNwog5vxTtKrWMihhhrT0Sg9jQ7iBDciYOwzBgP2krBEk5/GBXI18R1lKvmnxGcb4w==",
+ "dependencies": {
+ "xunit.extensibility.core": "[2.9.2]",
+ "xunit.extensibility.execution": "[2.9.2]"
+ }
+ },
+ "xunit.extensibility.core": {
+ "type": "Transitive",
+ "resolved": "2.9.2",
+ "contentHash": "Ol+KlBJz1x8BrdnhN2DeOuLrr1I/cTwtHCggL9BvYqFuVd/TUSzxNT5O0NxCIXth30bsKxgMfdqLTcORtM52yQ==",
+ "dependencies": {
+ "xunit.abstractions": "2.0.3"
+ }
+ },
+ "xunit.extensibility.execution": {
+ "type": "Transitive",
+ "resolved": "2.9.2",
+ "contentHash": "rKMpq4GsIUIJibXuZoZ8lYp5EpROlnYaRpwu9Zr0sRZXE7JqJfEEbCsUriZqB+ByXCLFBJyjkTRULMdC+U566g==",
+ "dependencies": {
+ "xunit.extensibility.core": "[2.9.2]"
+ }
+ },
+ "microsoft.eshopweb.web": {
+ "type": "Project",
+ "dependencies": {
+ "EntityFrameworkCore.FSharp": "[6.0.7, )",
+ "Falco": "[4.0.6, )",
+ "Microsoft.EntityFrameworkCore.Sqlite": "[8.0.10, )"
+ }
+ },
+ "Falco": {
+ "type": "CentralTransitive",
+ "requested": "[4.0.6, )",
+ "resolved": "4.0.6",
+ "contentHash": "EbXhnwdalKEGVBwYctYmh1QpgWs/0zJ37CNtSWwt5mmj1Xk6bNTJhyU55ppiF3HFnXRia3iJEc4x6okWoNnx2Q==",
+ "dependencies": {
+ "FSharp.Core": "6.0.0",
+ "Falco.Markup": "1.0.2"
+ }
+ },
+ "Microsoft.EntityFrameworkCore.Sqlite": {
+ "type": "CentralTransitive",
+ "requested": "[8.0.10, )",
+ "resolved": "8.0.10",
+ "contentHash": "inVXiKuOczjNVpLKG0nsnUmgL2m/bo6H/p4DCFVGRImJj6p9qrlwnU96A5FNZ56BF9VE1uZOULqgGTGTFVS19A==",
+ "dependencies": {
+ "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.10",
+ "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
From 8da2473bad6b3921752cfef807163e623167f40f Mon Sep 17 00:00:00 2001
From: Kyle McMaster
Date: Fri, 18 Jul 2025 11:50:00 -0400
Subject: [PATCH 4/5] Fix packages and pack lock file issues
---
Directory.Packages.props | 4 +-
src/Microsoft.eShopWeb.Web/packages.lock.json | 44 +++----
tests/packages.lock.json | 118 +++++++++---------
3 files changed, 84 insertions(+), 82 deletions(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index fdc0e6a..54b2ed9 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -9,8 +9,8 @@
-
-
+
+
diff --git a/src/Microsoft.eShopWeb.Web/packages.lock.json b/src/Microsoft.eShopWeb.Web/packages.lock.json
index e263667..6174825 100644
--- a/src/Microsoft.eShopWeb.Web/packages.lock.json
+++ b/src/Microsoft.eShopWeb.Web/packages.lock.json
@@ -1,7 +1,7 @@
{
"version": 2,
"dependencies": {
- "net8.0": {
+ "net9.0": {
"EntityFrameworkCore.FSharp": {
"type": "Direct",
"requested": "[6.0.7, )",
@@ -24,11 +24,11 @@
},
"Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Direct",
- "requested": "[8.0.10, )",
- "resolved": "8.0.10",
- "contentHash": "inVXiKuOczjNVpLKG0nsnUmgL2m/bo6H/p4DCFVGRImJj6p9qrlwnU96A5FNZ56BF9VE1uZOULqgGTGTFVS19A==",
+ "requested": "[8.0.18, )",
+ "resolved": "8.0.18",
+ "contentHash": "sND0U4KRvbIoxQmPCfCj6crSCZsV7OhzX59vcD7N+GvlqcDWZkALQFGCaIgDLGhxO+IFtfmG0KhkVLQCbiZdKA==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.10",
+ "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.18",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
}
},
@@ -52,32 +52,32 @@
},
"Microsoft.Data.Sqlite.Core": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "i95bgLqp6rJzmhQEtGhVVHnk1nYAhr/pLDul676PnwI/d7uDSSGs2ZPU9aP0VOuppkZaNinQOUCrD7cstDbQiQ==",
+ "resolved": "8.0.18",
+ "contentHash": "Fw4JZz1MbcpmYzuyWI3FSgb8891AOIbDk1FLug8IWlxbiMUlvZilwv/NVIxnyUw/a/3moFQN/mXA3XHvGGSu2w==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.6"
}
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
+ "resolved": "8.0.18",
+ "contentHash": "LBc07vlgPxEXmjF0Kgn1S0mip3KLDPVD1OQOFu+4Mfpg1Z8OPMJ82MVCkqek1Ex2WeCzVGbNI9nRXcepHB+48g==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
- "Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
+ "Microsoft.EntityFrameworkCore.Abstractions": "8.0.18",
+ "Microsoft.EntityFrameworkCore.Analyzers": "8.0.18",
"Microsoft.Extensions.Caching.Memory": "8.0.1",
"Microsoft.Extensions.Logging": "8.0.1"
}
},
"Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg=="
+ "resolved": "8.0.18",
+ "contentHash": "aQGpxj0/RKXhSqDFbWENQgOg6WQH3z5Dezu3VBXaTCBHE6hAWQIZmmqdpO1k+lkANsoCSwPJZ4iFRqPPZXBXzg=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw=="
+ "resolved": "8.0.18",
+ "contentHash": "aYkyWRkb+o9++mtIWn5XSYPVND5N9mFFfvdmBX1s6kCss6XTaZsFXf8QjvaiXAcGblp/HoYzS5lusx0ZqeFxzQ=="
},
"Microsoft.EntityFrameworkCore.Design": {
"type": "Transitive",
@@ -90,20 +90,20 @@
},
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
+ "resolved": "8.0.18",
+ "contentHash": "SL067ITd6QfDF9wNsNtGm3fROpnv3SNrOY3Fjb+efEUnKn5NI0sUitrtpUim+t1DtCJIs7qgmyCPdD3zjSt4Xw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "8.0.10",
+ "Microsoft.EntityFrameworkCore": "8.0.18",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
}
},
"Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "dmpgFx5BPqw/jJmBh9gp0UJpCcNDvWnGMoc9XHwp4K0h9skBE6A8E7+AwSiz556iyVf8Gn/qxHF1cgX9ZqGiYQ==",
+ "resolved": "8.0.18",
+ "contentHash": "1eHyHx2+l3hMrIBILJqNYmP4AnNfeE+D+E1bWrKqqnsLDKudTAeSmTJV2Q65Xd66jKYXQ0D1YWVRerggp9rt8A==",
"dependencies": {
- "Microsoft.Data.Sqlite.Core": "8.0.10",
- "Microsoft.EntityFrameworkCore.Relational": "8.0.10",
+ "Microsoft.Data.Sqlite.Core": "8.0.18",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.18",
"Microsoft.Extensions.DependencyModel": "8.0.2"
}
},
diff --git a/tests/packages.lock.json b/tests/packages.lock.json
index 77e34f0..dc646fd 100644
--- a/tests/packages.lock.json
+++ b/tests/packages.lock.json
@@ -1,7 +1,7 @@
{
"version": 2,
"dependencies": {
- "net8.0": {
+ "net9.0": {
"coverlet.collector": {
"type": "Direct",
"requested": "[6.0.2, )",
@@ -20,11 +20,13 @@
},
"Microsoft.EntityFrameworkCore.InMemory": {
"type": "Direct",
- "requested": "[8.0.10, )",
- "resolved": "8.0.10",
- "contentHash": "TdtSEbBsMg8dFq5T1PiOv48w2oiiduNzaEf3Fa7tO2b3lTBFO1y1Dla6ihs628P53TowsScjLSG8g5ZEw6KN0Q==",
+ "requested": "[9.0.0, )",
+ "resolved": "9.0.0",
+ "contentHash": "Pm4NBnv3aB8O5bBNwWRkL4a/H+3WdgKRKYD93FkR9TrUNb0jfns9JVN5w9WEUsQCm0C69Eg2Y85i8pdmSfaNnQ==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "8.0.10"
+ "Microsoft.EntityFrameworkCore": "9.0.0",
+ "Microsoft.Extensions.Caching.Memory": "9.0.0",
+ "Microsoft.Extensions.Logging": "9.0.0"
}
},
"Microsoft.NET.Test.Sdk": {
@@ -79,32 +81,32 @@
},
"Microsoft.Data.Sqlite.Core": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "i95bgLqp6rJzmhQEtGhVVHnk1nYAhr/pLDul676PnwI/d7uDSSGs2ZPU9aP0VOuppkZaNinQOUCrD7cstDbQiQ==",
+ "resolved": "8.0.18",
+ "contentHash": "Fw4JZz1MbcpmYzuyWI3FSgb8891AOIbDk1FLug8IWlxbiMUlvZilwv/NVIxnyUw/a/3moFQN/mXA3XHvGGSu2w==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.6"
}
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
+ "resolved": "9.0.0",
+ "contentHash": "wpG+nfnfDAw87R3ovAsUmjr3MZ4tYXf6bFqEPVAIKE6IfPml3DS//iX0DBnf8kWn5ZHSO5oi1m4d/Jf+1LifJQ==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
- "Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
- "Microsoft.Extensions.Caching.Memory": "8.0.1",
- "Microsoft.Extensions.Logging": "8.0.1"
+ "Microsoft.EntityFrameworkCore.Abstractions": "9.0.0",
+ "Microsoft.EntityFrameworkCore.Analyzers": "9.0.0",
+ "Microsoft.Extensions.Caching.Memory": "9.0.0",
+ "Microsoft.Extensions.Logging": "9.0.0"
}
},
"Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg=="
+ "resolved": "9.0.0",
+ "contentHash": "fnmifFL8KaA4ZNLCVgfjCWhZUFxkrDInx5hR4qG7Q8IEaSiy/6VOSRFyx55oH7MV4y7wM3J3EE90nSpcVBI44Q=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw=="
+ "resolved": "9.0.0",
+ "contentHash": "Qje+DzXJOKiXF72SL0XxNlDtTkvWWvmwknuZtFahY5hIQpRKO59qnGuERIQ3qlzuq5x4bAJ8WMbgU5DLhBgeOQ=="
},
"Microsoft.EntityFrameworkCore.Design": {
"type": "Transitive",
@@ -117,41 +119,41 @@
},
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
+ "resolved": "8.0.18",
+ "contentHash": "SL067ITd6QfDF9wNsNtGm3fROpnv3SNrOY3Fjb+efEUnKn5NI0sUitrtpUim+t1DtCJIs7qgmyCPdD3zjSt4Xw==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "8.0.10",
+ "Microsoft.EntityFrameworkCore": "8.0.18",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
}
},
"Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive",
- "resolved": "8.0.10",
- "contentHash": "dmpgFx5BPqw/jJmBh9gp0UJpCcNDvWnGMoc9XHwp4K0h9skBE6A8E7+AwSiz556iyVf8Gn/qxHF1cgX9ZqGiYQ==",
+ "resolved": "8.0.18",
+ "contentHash": "1eHyHx2+l3hMrIBILJqNYmP4AnNfeE+D+E1bWrKqqnsLDKudTAeSmTJV2Q65Xd66jKYXQ0D1YWVRerggp9rt8A==",
"dependencies": {
- "Microsoft.Data.Sqlite.Core": "8.0.10",
- "Microsoft.EntityFrameworkCore.Relational": "8.0.10",
+ "Microsoft.Data.Sqlite.Core": "8.0.18",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.18",
"Microsoft.Extensions.DependencyModel": "8.0.2"
}
},
"Microsoft.Extensions.Caching.Abstractions": {
"type": "Transitive",
- "resolved": "8.0.0",
- "contentHash": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
+ "resolved": "9.0.0",
+ "contentHash": "FPWZAa9c0H4dvOj351iR1jkUIs4u9ykL4Bm592yhjDyO5lCoWd+TMAHx2EMbarzUvCvgjWjJIoC6//Q9kH6YhA==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "8.0.0"
+ "Microsoft.Extensions.Primitives": "9.0.0"
}
},
"Microsoft.Extensions.Caching.Memory": {
"type": "Transitive",
- "resolved": "8.0.1",
- "contentHash": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
+ "resolved": "9.0.0",
+ "contentHash": "zbnPX/JQ0pETRSUG9fNPBvpIq42Aufvs15gGYyNIMhCun9yhmWihz0WgsI7bSDPjxWTKBf8oX/zv6v2uZ3W9OQ==",
"dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "8.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
- "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
- "Microsoft.Extensions.Options": "8.0.2",
- "Microsoft.Extensions.Primitives": "8.0.0"
+ "Microsoft.Extensions.Caching.Abstractions": "9.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.0",
+ "Microsoft.Extensions.Options": "9.0.0",
+ "Microsoft.Extensions.Primitives": "9.0.0"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
@@ -164,16 +166,16 @@
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
- "resolved": "8.0.1",
- "contentHash": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
+ "resolved": "9.0.0",
+ "contentHash": "MCPrg7v3QgNMr0vX4vzRXvkNGgLg8vKWX0nKCWUxu2uPyMsaRgiRc1tHBnbTcfJMhMKj2slE/j2M9oGkd25DNw==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
- "resolved": "8.0.2",
- "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg=="
+ "resolved": "9.0.0",
+ "contentHash": "+6f2qv2a3dLwd5w6JanPIPs47CxRbnk+ZocMJUhv9NxP88VlOcJYZs9jY+MYSjxvady08bUZn6qgiNh7DadGgg=="
},
"Microsoft.Extensions.DependencyModel": {
"type": "Transitive",
@@ -182,35 +184,35 @@
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
- "resolved": "8.0.1",
- "contentHash": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
+ "resolved": "9.0.0",
+ "contentHash": "crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "8.0.1",
- "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
- "Microsoft.Extensions.Options": "8.0.2"
+ "Microsoft.Extensions.DependencyInjection": "9.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.0",
+ "Microsoft.Extensions.Options": "9.0.0"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "8.0.2",
- "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
+ "resolved": "9.0.0",
+ "contentHash": "g0UfujELzlLbHoVG8kPKVBaW470Ewi+jnptGS9KUi6jcb+k2StujtK3m26DFSGGwQ/+bVgZfsWqNzlP6YOejvw==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0"
}
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
- "resolved": "8.0.2",
- "contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
+ "resolved": "9.0.0",
+ "contentHash": "y2146b3jrPI3Q0lokKXdKLpmXqakYbDIPDV6r3M8SqvSf45WwOTzkyfDpxnZXJsJQEpAsAqjUq5Pu8RCJMjubg==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
- "Microsoft.Extensions.Primitives": "8.0.0"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0",
+ "Microsoft.Extensions.Primitives": "9.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
- "resolved": "8.0.0",
- "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g=="
+ "resolved": "9.0.0",
+ "contentHash": "N3qEBzmLMYiASUlKxxFIISP4AiwuPTHF5uCh+2CWSwwzAJiIYx0kBJsS30cp1nvhSySFAVi30jecD307jV+8Kg=="
},
"Microsoft.TestPlatform.ObjectModel": {
"type": "Transitive",
@@ -319,7 +321,7 @@
"dependencies": {
"EntityFrameworkCore.FSharp": "[6.0.7, )",
"Falco": "[4.0.6, )",
- "Microsoft.EntityFrameworkCore.Sqlite": "[8.0.10, )"
+ "Microsoft.EntityFrameworkCore.Sqlite": "[8.0.18, )"
}
},
"Falco": {
@@ -334,11 +336,11 @@
},
"Microsoft.EntityFrameworkCore.Sqlite": {
"type": "CentralTransitive",
- "requested": "[8.0.10, )",
- "resolved": "8.0.10",
- "contentHash": "inVXiKuOczjNVpLKG0nsnUmgL2m/bo6H/p4DCFVGRImJj6p9qrlwnU96A5FNZ56BF9VE1uZOULqgGTGTFVS19A==",
+ "requested": "[8.0.18, )",
+ "resolved": "8.0.18",
+ "contentHash": "sND0U4KRvbIoxQmPCfCj6crSCZsV7OhzX59vcD7N+GvlqcDWZkALQFGCaIgDLGhxO+IFtfmG0KhkVLQCbiZdKA==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.10",
+ "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.18",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
}
}
From 8e5313df719920e981225f516ea09a5db1cb8b27 Mon Sep 17 00:00:00 2001
From: Kyle McMaster
Date: Fri, 18 Jul 2025 11:50:50 -0400
Subject: [PATCH 5/5] Update README.md
---
README.md | 29 -----------------------------
1 file changed, 29 deletions(-)
diff --git a/README.md b/README.md
index be17a1d..e82ae35 100644
--- a/README.md
+++ b/README.md
@@ -50,35 +50,6 @@ This will add the SQLite Explorer tray under the File Explorer where you can ini

-## Package Management
-
-This project uses [Central Package Management](https://docs.microsoft.com/en-us/nuget/consume-packages/central-package-management) to streamline dependency management and ensure consistent package versions across all projects.
-
-### How it works
-
-- Package versions are centrally defined in `Directory.Packages.props`
-- Individual project files (`*.fsproj`) reference packages without version attributes
-- All projects in the solution automatically use the centrally managed versions
-- Lock files (`packages.lock.json`) ensure reproducible builds across different environments
-
-### Benefits
-
-- **Consistency**: All projects use the same package versions
-- **Maintainability**: Update package versions in one place
-- **Reduced conflicts**: Eliminates version mismatches between projects
-- **Simplified updates**: Easier to upgrade packages across the entire solution
-
-### Adding new packages
-
-1. Add the package version to `Directory.Packages.props`:
- ```xml
-
- ```
-2. Reference the package in your project file without a version:
- ```xml
-
- ```
-
## Related Projects and Inspiration
- [eShopOnWeb](https://github.com/dotnet-architecture/eShopOnWeb)