Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>

<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>

<ItemGroup>
<!-- Main application packages -->
<PackageVersion Include="EntityFrameworkCore.FSharp" Version="6.0.7" />
<PackageVersion Include="Falco" Version="4.0.6" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.18" />

<!-- Test packages -->
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageVersion Include="xunit" Version="2.9.2" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0" />
</ItemGroup>

</Project>
6 changes: 3 additions & 3 deletions src/Microsoft.eShopWeb.Web/Microsoft.eShopWeb.Web.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
<Watch Include="**\*.fs" Exclude="node_modules\**\*;**\*.js.map;obj\**\*;bin\**\*" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="EntityFrameworkCore.FSharp" Version="6.0.7" />
<PackageReference Include="Falco" Version="4.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.6" />
<PackageReference Include="EntityFrameworkCore.FSharp" />
<PackageReference Include="Falco" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
</ItemGroup>
</Project>
175 changes: 78 additions & 97 deletions src/Microsoft.eShopWeb.Web/packages.lock.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": 1,
"version": 2,
"dependencies": {
"net9.0": {
"EntityFrameworkCore.FSharp": {
Expand All @@ -22,26 +22,14 @@
"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==",
"requested": "[8.0.18, )",
"resolved": "8.0.18",
"contentHash": "sND0U4KRvbIoxQmPCfCj6crSCZsV7OhzX59vcD7N+GvlqcDWZkALQFGCaIgDLGhxO+IFtfmG0KhkVLQCbiZdKA==",
"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": "8.0.18",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
}
},
"Falco.Markup": {
Expand All @@ -52,39 +40,44 @@
"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": "9.0.6",
"contentHash": "3auiudiViGzj1TidUdjuDqtP3+f6PBk4xdw6r9sBaTtkYoGc3AZn0cP8LgYZaLRnJBqY5bXRLB+qhjoB+iATzA==",
"resolved": "8.0.18",
"contentHash": "Fw4JZz1MbcpmYzuyWI3FSgb8891AOIbDk1FLug8IWlxbiMUlvZilwv/NVIxnyUw/a/3moFQN/mXA3XHvGGSu2w==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.10"
"SQLitePCLRaw.core": "2.1.6"
}
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "r5hzM6Bhw4X3z28l5vmsaCPjk9VsQP4zaaY01THh1SAYjgTMVadYIvpNkCfmrv/Klks6aIf2A9eY7cpGZab/hg==",
"resolved": "8.0.18",
"contentHash": "LBc07vlgPxEXmjF0Kgn1S0mip3KLDPVD1OQOFu+4Mfpg1Z8OPMJ82MVCkqek1Ex2WeCzVGbNI9nRXcepHB+48g==",
"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": "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": "9.0.6",
"contentHash": "7MkhPK8emb8hfOx/mFVvHuIHxQ+mH2YdlK4sFUXgsGlvR0A44vsmd2wcHavZOTTzaKhN+aFUVy3zmkztKmTo+A=="
"resolved": "8.0.18",
"contentHash": "aQGpxj0/RKXhSqDFbWENQgOg6WQH3z5Dezu3VBXaTCBHE6hAWQIZmmqdpO1k+lkANsoCSwPJZ4iFRqPPZXBXzg=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "VKggHNQC5FCn3/vooaIM/4aEjGmrmWm78IrdRLz9lLV0Rm9bVHEr/jiWApDkU0U9ec2xGAilvQqJ5mMX7QC2cw=="
"resolved": "8.0.18",
"contentHash": "aYkyWRkb+o9++mtIWn5XSYPVND5N9mFFfvdmBX1s6kCss6XTaZsFXf8QjvaiXAcGblp/HoYzS5lusx0ZqeFxzQ=="
},
"Microsoft.EntityFrameworkCore.Design": {
"type": "Transitive",
Expand All @@ -97,147 +90,135 @@
},
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "Ht6OT17sYnO31Dx+hX72YHrc5kZt53g5napaw0FpyIekXCvb+gUVvufEG55Fa7taFm8ccy0Vzs+JVNR9NL0JlA==",
"resolved": "8.0.18",
"contentHash": "SL067ITd6QfDF9wNsNtGm3fROpnv3SNrOY3Fjb+efEUnKn5NI0sUitrtpUim+t1DtCJIs7qgmyCPdD3zjSt4Xw==",
"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": "8.0.18",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
}
},
"Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "xP+SvMDR/GZCDNXFw7z4WYbO2sYpECvht3+lqejg+Md8vLtURwTBvdsOUAnY4jBGmNFqHeh87hZSmUGmuxyqMA==",
"resolved": "8.0.18",
"contentHash": "1eHyHx2+l3hMrIBILJqNYmP4AnNfeE+D+E1bWrKqqnsLDKudTAeSmTJV2Q65Xd66jKYXQ0D1YWVRerggp9rt8A==",
"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.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": "9.0.6",
"contentHash": "bL/xQsVNrdVkzjP5yjX4ndkQ03H3+Bk3qPpl+AMCEJR2RkfgAYmoQ/xXffPV7is64+QHShnhA12YAaFmNbfM+A==",
"resolved": "8.0.0",
"contentHash": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "9.0.6"
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Caching.Memory": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "qPW2d798tBPZcRmrlaBJqyChf2+0odDdE+0Lxvrr0ywkSNl1oNMK8AKrOfDwyXyjuLCv0ua7p6nrUExCeXhCcg==",
"resolved": "8.0.1",
"contentHash": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
"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.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": "9.0.6",
"contentHash": "3GgMIi2jP8g1fBW93Z9b9Unamc0SIsgyhiCmC91gq4loTixK9vQMuxxUsfJ1kRGwn+/FqLKwOHqmn0oYWn3Fvw==",
"resolved": "8.0.0",
"contentHash": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"dependencies": {
"Microsoft.Extensions.Primitives": "9.0.6"
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "vS65HMo5RS10DD543fknsyVDxihMcVxVn3/hNaILgBxWYnOLxWIeCIO9X0QFuCvPRNjClvXe9Aj8KaQNx7vFkQ==",
"resolved": "8.0.1",
"contentHash": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6"
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "0Zn6nR/6g+90MxskZyOOMPQvnPnrrGu6bytPwkV+azDcTtCSuQ1+GJUrg8Klmnrjk1i6zMpw2lXijl+tw7Q3kA=="
"resolved": "8.0.2",
"contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg=="
},
"Microsoft.Extensions.DependencyModel": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "grVU1ixgMHp+kuhIgvEzhE73jXRY6XmxNBPWrotmbjB9AvJvkwHnIzm1JlOsPpyixFgnzreh/bFBMJAjveX+fQ=="
"resolved": "8.0.2",
"contentHash": "mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw=="
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "XBzjitTFaQhF8EbJ645vblZezV1p52ePTxKHoVkRidHF11Xkjxg94qr0Rvp2qyxK2vBJ4OIZ41NB15YUyxTGMQ==",
"resolved": "8.0.1",
"contentHash": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "9.0.6",
"Microsoft.Extensions.Logging.Abstractions": "9.0.6",
"Microsoft.Extensions.Options": "9.0.6"
"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": "9.0.6",
"contentHash": "LFnyBNK7WtFmKdnHu3v0HOYQ8BcjYuy0jdC9pgCJ/rbLKoJEG9/dBzSKMEeeWDbDeoWS0TIxOC8a9CM5ufca3A==",
"resolved": "8.0.2",
"contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6"
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
}
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "wUPhNM1zsI58Dy10xRdF2+pnsisiUuETg5ZBncyAEEUm/CQ9Q1vmivyUWH8RDbAlqyixf2dJNQ2XZb7HsKUEQw==",
"resolved": "8.0.2",
"contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.6",
"Microsoft.Extensions.Primitives": "9.0.6"
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "9.0.6",
"contentHash": "BHniU24QV67qp1pJknqYSofAPYGmijGI8D+ci9yfw33iuFdyOeB9lWTg78ThyYLyQwZw3s0vZ36VMb0MqbUuLw=="
"resolved": "8.0.0",
"contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g=="
},
"SQLitePCLRaw.bundle_e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.10",
"contentHash": "UxWuisvZ3uVcVOLJQv7urM/JiQH+v3TmaJc1BLKl5Dxfm/nTzTUrqswCqg/INiYLi61AXnHo1M1JPmPqqLnAdg==",
"resolved": "2.1.6",
"contentHash": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
"dependencies": {
"SQLitePCLRaw.lib.e_sqlite3": "2.1.10",
"SQLitePCLRaw.provider.e_sqlite3": "2.1.10"
"SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
"SQLitePCLRaw.provider.e_sqlite3": "2.1.6"
}
},
"SQLitePCLRaw.core": {
"type": "Transitive",
"resolved": "2.1.10",
"contentHash": "Ii8JCbC7oiVclaE/mbDEK000EFIJ+ShRPwAvvV89GOZhQ+ZLtlnSWl6ksCNMKu/VGXA4Nfi2B7LhN/QFN9oBcw==",
"resolved": "2.1.6",
"contentHash": "wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==",
"dependencies": {
"System.Memory": "4.5.3"
}
},
"SQLitePCLRaw.lib.e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.10",
"contentHash": "mAr69tDbnf3QJpRy2nJz8Qdpebdil00fvycyByR58Cn9eARvR+UiG2Vzsp+4q1tV3ikwiYIjlXCQFc12GfebbA=="
"resolved": "2.1.6",
"contentHash": "2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q=="
},
"SQLitePCLRaw.provider.e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.10",
"contentHash": "uZVTi02C1SxqzgT0HqTWatIbWGb40iIkfc3FpFCpE/r7g6K0PqzDUeefL6P6HPhDtc6BacN3yQysfzP7ks+wSQ==",
"resolved": "2.1.6",
"contentHash": "PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.10"
"SQLitePCLRaw.core": "2.1.6"
}
},
"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=="
}
}
}
Expand Down
35 changes: 35 additions & 0 deletions tests/CentralPackageManagementTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
module CentralPackageManagementTests

open Xunit
open System.IO

[<Fact>]
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")

[<Fact>]
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)

[<Fact>]
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)
13 changes: 7 additions & 6 deletions tests/FShopOnWeb.Tests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@

<ItemGroup>
<Compile Include="Basket/RemoveFromBasket.fs" />
<Compile Include="CentralPackageManagementTests.fs" />
<Compile Include="Program.fs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0" />
<PackageReference Include="EntityFrameworkCore.FSharp" Version="6.0.7" />
<PackageReference Include="coverlet.collector" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.visualstudio" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" />
<PackageReference Include="EntityFrameworkCore.FSharp" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading
Loading