diff --git a/.azure/pipelines/azure-pipelines-nightly.yml b/.azure/pipelines/azure-pipelines-nightly.yml
index 0c32bf19a7c..2447d5251da 100644
--- a/.azure/pipelines/azure-pipelines-nightly.yml
+++ b/.azure/pipelines/azure-pipelines-nightly.yml
@@ -8,7 +8,7 @@ schedules:
- main
always: true
variables:
- solution: 'Garnet.sln'
+ solution: 'Garnet.slnx'
RunAzureTests: 'yes'
jobs:
diff --git a/.azure/pipelines/azure-pipelines.yml b/.azure/pipelines/azure-pipelines.yml
index 95133c4166a..3c0935bb31d 100644
--- a/.azure/pipelines/azure-pipelines.yml
+++ b/.azure/pipelines/azure-pipelines.yml
@@ -1,5 +1,5 @@
variables:
- solution: 'Garnet.sln'
+ solution: 'Garnet.slnx'
RunAzureTests: 'no'
jobs:
diff --git a/.gitattributes b/.gitattributes
index dbfa751c900..0903cb5c332 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -13,6 +13,7 @@
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
+*.slnx text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index f521e4a51a0..2b278fdc1e8 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -37,7 +37,7 @@ body:
label: IDE
description: Which IDE versions did you see the issue on?
placeholder: |
- Visual Studio 2022-preview
+ Visual Studio 2026
- type: textarea
attributes:
label: OS version
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 408990da324..ab8a0c39b12 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -54,9 +54,9 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
- name: Install dependencies
- run: dotnet restore Garnet.sln
+ run: dotnet restore Garnet.slnx
- name: Check style format
- run: dotnet format Garnet.sln --no-restore --verify-no-changes --verbosity diagnostic
+ run: dotnet format Garnet.slnx --no-restore --verify-no-changes --verbosity diagnostic
format-tsavorite:
name: Format Tsavorite
@@ -69,9 +69,9 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
- name: Install dependencies
- run: dotnet restore libs/storage/Tsavorite/cs/Tsavorite.sln
+ run: dotnet restore libs/storage/Tsavorite/cs/Tsavorite.slnx
- name: Check style format
- run: dotnet format libs/storage/Tsavorite/cs/Tsavorite.sln --no-restore --verify-no-changes --verbosity diagnostic
+ run: dotnet format libs/storage/Tsavorite/cs/Tsavorite.slnx --no-restore --verify-no-changes --verbosity diagnostic
# Job to build and test Garnet code
build-test-garnet:
diff --git a/Garnet.sln b/Garnet.sln
deleted file mode 100644
index c3df1f7c058..00000000000
--- a/Garnet.sln
+++ /dev/null
@@ -1,413 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 18
-VisualStudioVersion = 18.0.11128.255 d18.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmark", "benchmark", "{346A5A53-51E4-4A75-B7E6-491D950382CE}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "main", "main", "{8655B774-9ABC-4D24-8499-B6A08C3558E4}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libs", "libs", "{147FCE31-EC09-4C90-8E4D-37CA87ED18C3}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{9A03717A-4E0B-49CA-8579-A02A4C1D003F}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "playground", "playground", "{69A71E2C-00E3-42F3-854E-BE157A24834E}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{7068BB97-1958-4060-B5F1-859464592E56}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Resp.benchmark", "benchmark\Resp.benchmark\Resp.benchmark.csproj", "{545A3E41-4043-4652-AB6E-36006B43FCA4}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.common", "libs\common\Garnet.common.csproj", "{7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.client", "libs\client\Garnet.client.csproj", "{84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.server", "libs\server\Garnet.server.csproj", "{5350A1BB-93C1-48C5-8244-CFC6C276E390}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GarnetServer", "main\GarnetServer\GarnetServer.csproj", "{4B199051-9972-42C3-A9DD-AC47210A6674}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.test", "test\Garnet.test\Garnet.test.csproj", "{A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tsavorite", "Tsavorite", "{B01808A2-0103-4580-9F01-18AADBCFEAF5}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{854CCB4B-1639-43FF-B482-2BF051667E25}"
- ProjectSection(SolutionItems) = preProject
- .editorconfig = .editorconfig
- .github\workflows\ci.yml = .github\workflows\ci.yml
- Directory.Build.props = Directory.Build.props
- Directory.Packages.props = Directory.Packages.props
- docker-compose.yml = docker-compose.yml
- .github\workflows\docker.yml = .github\workflows\docker.yml
- Dockerfile = Dockerfile
- Dockerfile.alpine = Dockerfile.alpine
- Dockerfile.cbl-mariner = Dockerfile.cbl-mariner
- Dockerfile.chiseled = Dockerfile.chiseled
- Dockerfile.nanoserver = Dockerfile.nanoserver
- Dockerfile.ubuntu = Dockerfile.ubuntu
- .azure\pipelines\extract_version.ps1 = .azure\pipelines\extract_version.ps1
- Version.props = Version.props
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bitmap", "playground\Bitmap\Bitmap.csproj", "{B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TstRunner", "playground\TstRunner\TstRunner.csproj", "{27D852C9-7A7F-436D-8A89-22287ECF8EB2}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GarnetClientSample", "samples\GarnetClientSample\GarnetClientSample.csproj", "{224C41AE-D21C-4300-A16F-969E178B01B0}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MetricsMonitor", "samples\MetricsMonitor\MetricsMonitor.csproj", "{3F783E1E-1B5B-45C9-AE06-173B13B08418}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "metrics", "metrics", "{6960DC4F-DE07-4EE4-9362-BAAD4BEA2B91}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HdrHistogram", "metrics\HdrHistogram\HdrHistogram.csproj", "{5621604A-3179-4265-ACA9-865A82E0E495}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tsavorite.core", "libs\storage\Tsavorite\cs\src\core\Tsavorite.core.csproj", "{4F04C17C-6ED0-41A0-8FE1-3823438A896E}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GarnetClientStress", "playground\GarnetClientStress\GarnetClientStress.csproj", "{58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tsavorite.devices.AzureStorageDevice", "libs\storage\Tsavorite\cs\src\devices\AzureStorageDevice\Tsavorite.devices.AzureStorageDevice.csproj", "{9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.cluster", "libs\cluster\Garnet.cluster.csproj", "{132A978C-144D-4436-8833-FF5A94616CC5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.host", "libs\host\Garnet.host.csproj", "{A5D29D02-5883-4DB8-BE12-9C223139815E}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".azure", ".azure", "{4485E56B-C60D-4994-9C5E-D3A9639EE43A}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pipelines", "pipelines", "{4CEA9C01-1519-4D1A-B096-B3208896496A}"
- ProjectSection(SolutionItems) = preProject
- .azure\pipelines\azure-pipelines-compliance-policheck.yml = .azure\pipelines\azure-pipelines-compliance-policheck.yml
- .azure\pipelines\azure-pipelines-compliance.yml = .azure\pipelines\azure-pipelines-compliance.yml
- .azure\pipelines\azure-pipelines-external-release.yml = .azure\pipelines\azure-pipelines-external-release.yml
- .azure\pipelines\azure-pipelines-internal-release.yml = .azure\pipelines\azure-pipelines-internal-release.yml
- .azure\pipelines\azure-pipelines-mirror.yml = .azure\pipelines\azure-pipelines-mirror.yml
- .azure\pipelines\azure-pipelines-tsavorite-codecoverage.yml = .azure\pipelines\azure-pipelines-tsavorite-codecoverage.yml
- .azure\pipelines\azure-pipelines-tsavorite.yml = .azure\pipelines\azure-pipelines-tsavorite.yml
- .azure\pipelines\azure-pipelines.yml = .azure\pipelines\azure-pipelines.yml
- .azure\pipelines\CodeCoverage.runsettings = .azure\pipelines\CodeCoverage.runsettings
- .azure\pipelines\credscan-exclusion.json = .azure\pipelines\credscan-exclusion.json
- policheck-exclusion.xml = policheck-exclusion.xml
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.test.cluster", "test\Garnet.test.cluster\Garnet.test.cluster.csproj", "{FE775048-3DB9-4F9E-A715-06C0E319BA63}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClusterStress", "playground\ClusterStress\ClusterStress.csproj", "{8941A05C-099B-45AC-A7BF-F0E226BD59A8}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Embedded.perftest", "playground\Embedded.perftest\Embedded.perftest.csproj", "{5BEDAC1F-6458-4EBA-8174-EC06B07F2132}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BDN.benchmark", "benchmark\BDN.benchmark\BDN.benchmark.csproj", "{9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommandInfoUpdater", "playground\CommandInfoUpdater\CommandInfoUpdater.csproj", "{9BE474A2-1547-43AC-B4F2-FB48A01FA995}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleModule", "playground\SampleModule\SampleModule.csproj", "{A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MigrateBench", "playground\MigrateBench\MigrateBench.csproj", "{6B66B394-E410-4B61-9A5A-1595FF6F5E08}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "hosting", "hosting", "{01823EA4-4446-4D66-B268-DFEE55951964}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Windows", "Windows", "{697766CD-2046-46D9-958A-0FD3B46C98D4}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.worker", "hosting\Windows\Garnet.worker\Garnet.worker.csproj", "{DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garnet.resources", "libs\resources\Garnet.resources.csproj", "{A48412B4-FD60-467E-A5D9-F155CAB4F907}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoOpModule", "modules\NoOpModule\NoOpModule.csproj", "{D4C9A1A0-7053-F072-21F5-4E0C5827136D}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{D8A9CE6E-91B9-4B84-B44A-2BCF1161A793}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GarnetJSON", "modules\GarnetJSON\GarnetJSON.csproj", "{1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ETag", "samples\ETag\ETag.csproj", "{4FBA1587-BAFC-49F8-803A-D1CF431A26F5}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Garnet.fuzz", "test\Garnet.fuzz\Garnet.fuzz.csproj", "{7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Device.benchmark", "benchmark\Device.benchmark\Device.benchmark.csproj", "{5422F66F-327C-AABE-98B2-9AFC349745D0}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Debug|x64.ActiveCfg = Debug|Any CPU
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Debug|x64.Build.0 = Debug|Any CPU
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Release|Any CPU.Build.0 = Release|Any CPU
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Release|x64.ActiveCfg = Release|Any CPU
- {545A3E41-4043-4652-AB6E-36006B43FCA4}.Release|x64.Build.0 = Release|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Debug|x64.ActiveCfg = Debug|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Debug|x64.Build.0 = Debug|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Release|Any CPU.Build.0 = Release|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Release|x64.ActiveCfg = Release|Any CPU
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29}.Release|x64.Build.0 = Release|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Debug|x64.ActiveCfg = Debug|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Debug|x64.Build.0 = Debug|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Release|Any CPU.Build.0 = Release|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Release|x64.ActiveCfg = Release|Any CPU
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC}.Release|x64.Build.0 = Release|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Debug|x64.Build.0 = Debug|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Release|Any CPU.Build.0 = Release|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Release|x64.ActiveCfg = Release|Any CPU
- {5350A1BB-93C1-48C5-8244-CFC6C276E390}.Release|x64.Build.0 = Release|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Debug|x64.ActiveCfg = Debug|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Debug|x64.Build.0 = Debug|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Release|Any CPU.Build.0 = Release|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Release|x64.ActiveCfg = Release|Any CPU
- {4B199051-9972-42C3-A9DD-AC47210A6674}.Release|x64.Build.0 = Release|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Debug|x64.Build.0 = Debug|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Release|Any CPU.Build.0 = Release|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Release|x64.ActiveCfg = Release|Any CPU
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B}.Release|x64.Build.0 = Release|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Debug|x64.Build.0 = Debug|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Release|Any CPU.Build.0 = Release|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Release|x64.ActiveCfg = Release|Any CPU
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5}.Release|x64.Build.0 = Release|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Debug|x64.ActiveCfg = Debug|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Debug|x64.Build.0 = Debug|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Release|Any CPU.Build.0 = Release|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Release|x64.ActiveCfg = Release|Any CPU
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2}.Release|x64.Build.0 = Release|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Debug|x64.ActiveCfg = Debug|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Debug|x64.Build.0 = Debug|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Release|Any CPU.Build.0 = Release|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Release|x64.ActiveCfg = Release|Any CPU
- {224C41AE-D21C-4300-A16F-969E178B01B0}.Release|x64.Build.0 = Release|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Debug|x64.Build.0 = Debug|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Release|Any CPU.Build.0 = Release|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Release|x64.ActiveCfg = Release|Any CPU
- {3F783E1E-1B5B-45C9-AE06-173B13B08418}.Release|x64.Build.0 = Release|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Debug|x64.Build.0 = Debug|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Release|Any CPU.Build.0 = Release|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Release|x64.ActiveCfg = Release|Any CPU
- {5621604A-3179-4265-ACA9-865A82E0E495}.Release|x64.Build.0 = Release|Any CPU
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Debug|x64.ActiveCfg = Debug|x64
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Debug|x64.Build.0 = Debug|x64
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Release|Any CPU.Build.0 = Release|Any CPU
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Release|x64.ActiveCfg = Release|x64
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E}.Release|x64.Build.0 = Release|x64
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Debug|x64.ActiveCfg = Debug|Any CPU
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Debug|x64.Build.0 = Debug|Any CPU
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Release|Any CPU.Build.0 = Release|Any CPU
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Release|x64.ActiveCfg = Release|Any CPU
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219}.Release|x64.Build.0 = Release|Any CPU
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Debug|x64.ActiveCfg = Debug|x64
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Debug|x64.Build.0 = Debug|x64
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Release|Any CPU.Build.0 = Release|Any CPU
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Release|x64.ActiveCfg = Release|x64
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95}.Release|x64.Build.0 = Release|x64
- {132A978C-144D-4436-8833-FF5A94616CC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {132A978C-144D-4436-8833-FF5A94616CC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {132A978C-144D-4436-8833-FF5A94616CC5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {132A978C-144D-4436-8833-FF5A94616CC5}.Debug|x64.Build.0 = Debug|Any CPU
- {132A978C-144D-4436-8833-FF5A94616CC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {132A978C-144D-4436-8833-FF5A94616CC5}.Release|Any CPU.Build.0 = Release|Any CPU
- {132A978C-144D-4436-8833-FF5A94616CC5}.Release|x64.ActiveCfg = Release|Any CPU
- {132A978C-144D-4436-8833-FF5A94616CC5}.Release|x64.Build.0 = Release|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Debug|x64.Build.0 = Debug|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Release|Any CPU.Build.0 = Release|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Release|x64.ActiveCfg = Release|Any CPU
- {A5D29D02-5883-4DB8-BE12-9C223139815E}.Release|x64.Build.0 = Release|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Debug|x64.ActiveCfg = Debug|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Debug|x64.Build.0 = Debug|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Release|Any CPU.Build.0 = Release|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Release|x64.ActiveCfg = Release|Any CPU
- {FE775048-3DB9-4F9E-A715-06C0E319BA63}.Release|x64.Build.0 = Release|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Debug|x64.ActiveCfg = Debug|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Debug|x64.Build.0 = Debug|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Release|Any CPU.Build.0 = Release|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Release|x64.ActiveCfg = Release|Any CPU
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8}.Release|x64.Build.0 = Release|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Debug|x64.Build.0 = Debug|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Release|Any CPU.Build.0 = Release|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Release|x64.ActiveCfg = Release|Any CPU
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132}.Release|x64.Build.0 = Release|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Debug|x64.ActiveCfg = Debug|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Debug|x64.Build.0 = Debug|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Release|Any CPU.Build.0 = Release|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Release|x64.ActiveCfg = Release|Any CPU
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD}.Release|x64.Build.0 = Release|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Debug|x64.ActiveCfg = Debug|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Debug|x64.Build.0 = Debug|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Release|Any CPU.Build.0 = Release|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Release|x64.ActiveCfg = Release|Any CPU
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995}.Release|x64.Build.0 = Release|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Debug|x64.Build.0 = Debug|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Release|Any CPU.Build.0 = Release|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Release|x64.ActiveCfg = Release|Any CPU
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F}.Release|x64.Build.0 = Release|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Debug|x64.ActiveCfg = Debug|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Debug|x64.Build.0 = Debug|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Release|Any CPU.Build.0 = Release|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Release|x64.ActiveCfg = Release|Any CPU
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08}.Release|x64.Build.0 = Release|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Debug|x64.Build.0 = Debug|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Release|Any CPU.Build.0 = Release|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Release|x64.ActiveCfg = Release|Any CPU
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5}.Release|x64.Build.0 = Release|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Debug|x64.Build.0 = Debug|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Release|Any CPU.Build.0 = Release|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Release|x64.ActiveCfg = Release|Any CPU
- {A48412B4-FD60-467E-A5D9-F155CAB4F907}.Release|x64.Build.0 = Release|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Debug|x64.Build.0 = Debug|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Release|Any CPU.Build.0 = Release|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Release|x64.ActiveCfg = Release|Any CPU
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D}.Release|x64.Build.0 = Release|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Debug|x64.Build.0 = Debug|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Release|Any CPU.Build.0 = Release|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Release|x64.ActiveCfg = Release|Any CPU
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5}.Release|x64.Build.0 = Release|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Debug|x64.Build.0 = Debug|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Release|Any CPU.Build.0 = Release|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Release|x64.ActiveCfg = Release|Any CPU
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5}.Release|x64.Build.0 = Release|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Debug|x64.ActiveCfg = Debug|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Debug|x64.Build.0 = Debug|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Release|Any CPU.Build.0 = Release|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Release|x64.ActiveCfg = Release|Any CPU
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC}.Release|x64.Build.0 = Release|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Debug|x64.Build.0 = Debug|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Release|Any CPU.Build.0 = Release|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Release|x64.ActiveCfg = Release|Any CPU
- {5422F66F-327C-AABE-98B2-9AFC349745D0}.Release|x64.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {545A3E41-4043-4652-AB6E-36006B43FCA4} = {346A5A53-51E4-4A75-B7E6-491D950382CE}
- {7B20CEA4-D68A-49C3-B55F-5EBD897F9D29} = {147FCE31-EC09-4C90-8E4D-37CA87ED18C3}
- {84EA8B6E-65A6-4084-A71D-CCC3B90D63EC} = {147FCE31-EC09-4C90-8E4D-37CA87ED18C3}
- {5350A1BB-93C1-48C5-8244-CFC6C276E390} = {147FCE31-EC09-4C90-8E4D-37CA87ED18C3}
- {4B199051-9972-42C3-A9DD-AC47210A6674} = {8655B774-9ABC-4D24-8499-B6A08C3558E4}
- {A9345D5F-8A2F-48C2-A3E3-76D620A04D2B} = {9A03717A-4E0B-49CA-8579-A02A4C1D003F}
- {B01808A2-0103-4580-9F01-18AADBCFEAF5} = {147FCE31-EC09-4C90-8E4D-37CA87ED18C3}
- {B9FA7D45-6DAE-4D56-AD7E-BB6C987A58C5} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {27D852C9-7A7F-436D-8A89-22287ECF8EB2} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {224C41AE-D21C-4300-A16F-969E178B01B0} = {7068BB97-1958-4060-B5F1-859464592E56}
- {3F783E1E-1B5B-45C9-AE06-173B13B08418} = {7068BB97-1958-4060-B5F1-859464592E56}
- {5621604A-3179-4265-ACA9-865A82E0E495} = {6960DC4F-DE07-4EE4-9362-BAAD4BEA2B91}
- {4F04C17C-6ED0-41A0-8FE1-3823438A896E} = {B01808A2-0103-4580-9F01-18AADBCFEAF5}
- {58F00DF9-C12F-4D3F-9CC5-8AA5402E2219} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {9D5C0F15-D9E8-4F1B-BBA2-B604E0F91E95} = {B01808A2-0103-4580-9F01-18AADBCFEAF5}
- {132A978C-144D-4436-8833-FF5A94616CC5} = {147FCE31-EC09-4C90-8E4D-37CA87ED18C3}
- {A5D29D02-5883-4DB8-BE12-9C223139815E} = {147FCE31-EC09-4C90-8E4D-37CA87ED18C3}
- {4CEA9C01-1519-4D1A-B096-B3208896496A} = {4485E56B-C60D-4994-9C5E-D3A9639EE43A}
- {FE775048-3DB9-4F9E-A715-06C0E319BA63} = {9A03717A-4E0B-49CA-8579-A02A4C1D003F}
- {8941A05C-099B-45AC-A7BF-F0E226BD59A8} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {5BEDAC1F-6458-4EBA-8174-EC06B07F2132} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {9F6E4734-6341-4A9C-A7FF-636A39D8BEAD} = {346A5A53-51E4-4A75-B7E6-491D950382CE}
- {9BE474A2-1547-43AC-B4F2-FB48A01FA995} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {A8CA619E-8F13-4EF8-943F-2D5E3FEBFB3F} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {6B66B394-E410-4B61-9A5A-1595FF6F5E08} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {697766CD-2046-46D9-958A-0FD3B46C98D4} = {01823EA4-4446-4D66-B268-DFEE55951964}
- {DF2DD03E-87EE-482A-9FBA-6C8FBC23BDC5} = {697766CD-2046-46D9-958A-0FD3B46C98D4}
- {A48412B4-FD60-467E-A5D9-F155CAB4F907} = {147FCE31-EC09-4C90-8E4D-37CA87ED18C3}
- {D4C9A1A0-7053-F072-21F5-4E0C5827136D} = {69A71E2C-00E3-42F3-854E-BE157A24834E}
- {1A5DF817-D0DD-4F0B-AE3A-C9CD0E03C9D5} = {D8A9CE6E-91B9-4B84-B44A-2BCF1161A793}
- {4FBA1587-BAFC-49F8-803A-D1CF431A26F5} = {7068BB97-1958-4060-B5F1-859464592E56}
- {7A42F7AA-EE93-49B1-8711-A1D6D948F5FC} = {9A03717A-4E0B-49CA-8579-A02A4C1D003F}
- {5422F66F-327C-AABE-98B2-9AFC349745D0} = {346A5A53-51E4-4A75-B7E6-491D950382CE}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {2C02C405-4798-41CA-AF98-61EDFEF6772E}
- EndGlobalSection
-EndGlobal
diff --git a/Garnet.slnx b/Garnet.slnx
new file mode 100644
index 00000000000..59c0a0b3cb3
--- /dev/null
+++ b/Garnet.slnx
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/benchmark/README.md b/benchmark/README.md
index e471f0e6ca6..8f52ec6a0e6 100644
--- a/benchmark/README.md
+++ b/benchmark/README.md
@@ -20,7 +20,7 @@ You can list all available benchmarks using `--list flat` or `--list tree`, e.g.
dotnet run -c Release -f net8.0 --list flat
```
-To run specific benchmarks, you can use `--filter`. For example, to run all RESP-protocol write benchmarks using the default configuration, which will run the benchmarks using both .NET 6 and .NET 8 runtimes (with the dynamic PGO disabled):
+To run specific benchmarks, you can use `--filter`. For example, to run all RESP-protocol write benchmarks using the default configuration, which will run the benchmarks using all .NET target runtimes (with the dynamic PGO disabled):
```
dotnet run -c Release -f net8.0 --filter *RespIntegerWriteBenchmarks*
diff --git a/libs/storage/Tsavorite/cc/CMakeLists.txt b/libs/storage/Tsavorite/cc/CMakeLists.txt
index 0c510620fd8..f275c98a1a8 100644
--- a/libs/storage/Tsavorite/cc/CMakeLists.txt
+++ b/libs/storage/Tsavorite/cc/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.2.2)
set(CMAKE_CXX_STANDARD 14)
-project(Garnet)
+project(Tsavorite)
OPTION(USE_URING "Enable io_uring based IO handler" OFF)
diff --git a/libs/storage/Tsavorite/cc/README.md b/libs/storage/Tsavorite/cc/README.md
index 44d9ec036aa..a78d734d7d1 100644
--- a/libs/storage/Tsavorite/cc/README.md
+++ b/libs/storage/Tsavorite/cc/README.md
@@ -1,4 +1,4 @@
-# Garnet Native Device (C++)
+# Tsavorite Native Device (C++)
We use CMake to build the native device (optionally used on Linux). To build, create
one or more build directories and use CMake to set up build scripts for your target OS.
@@ -22,8 +22,8 @@ cmake .. -G "Visual Studio 17 2022"
```
That will create build scripts inside your new "build" directory, including
-a "Garnet.sln" file that you can use inside Visual Studio. CMake will add several
-build profiles to Garnet.sln, including Debug/x64 and Release/x64.
+a `Tsavorite.sln` file that you can use inside Visual Studio. CMake will add several
+build profiles to `Tsavorite.sln`, including Debug/x64 and Release/x64.
### Building on Linux
diff --git a/libs/storage/Tsavorite/cs/Tsavorite.sln b/libs/storage/Tsavorite/cs/Tsavorite.sln
deleted file mode 100644
index cc685599858..00000000000
--- a/libs/storage/Tsavorite/cs/Tsavorite.sln
+++ /dev/null
@@ -1,120 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.2.32526.322
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YCSB.benchmark", "benchmark\YCSB.benchmark\YCSB.benchmark.csproj", "{33A732D1-2B58-4FEE-9696-B9483496229F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tsavorite.test", "test\Tsavorite.test.csproj", "{0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmark", "benchmark", "{CA6AB459-A31A-4C15-B1A6-A82C349B54B4}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{81B3B5D1-70F6-4979-AC76-003F9A6B316B}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{28800357-C8CE-4CD0-A2AD-D4A910ABB496}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{9531E3D2-217B-4446-98E8-E48F0FDD1452}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tsavorite.core", "src\core\Tsavorite.core.csproj", "{F947BC6A-2943-4AC7-ACA7-F17351E25FE7}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "devices", "devices", "{A6B14415-D316-4955-BE5F-725BB2DEBEBE}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tsavorite.devices.AzureStorageDevice", "src\devices\AzureStorageDevice\Tsavorite.devices.AzureStorageDevice.csproj", "{E571E686-01A0-44D5-BFF5-B7678284258B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BDN-Tsavorite.benchmark", "benchmark\BDN-Tsavorite.Benchmark\BDN-Tsavorite.benchmark.csproj", "{1C3591CE-7521-4BE4-8B24-626AD92F7B19}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Debug|x64.ActiveCfg = Debug|x64
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Debug|x64.Build.0 = Debug|x64
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Release|Any CPU.Build.0 = Release|Any CPU
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Release|x64.ActiveCfg = Release|x64
- {33A732D1-2B58-4FEE-9696-B9483496229F}.Release|x64.Build.0 = Release|x64
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Debug|x64.ActiveCfg = Debug|x64
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Debug|x64.Build.0 = Debug|x64
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Release|Any CPU.Build.0 = Release|Any CPU
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Release|x64.ActiveCfg = Release|x64
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2}.Release|x64.Build.0 = Release|x64
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Debug|x64.ActiveCfg = Debug|x64
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Debug|x64.Build.0 = Debug|x64
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Release|Any CPU.Build.0 = Release|Any CPU
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Release|x64.ActiveCfg = Release|x64
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7}.Release|x64.Build.0 = Release|x64
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Debug|x64.ActiveCfg = Debug|x64
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Debug|x64.Build.0 = Debug|x64
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Release|Any CPU.Build.0 = Release|Any CPU
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Release|x64.ActiveCfg = Release|x64
- {E571E686-01A0-44D5-BFF5-B7678284258B}.Release|x64.Build.0 = Release|x64
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Debug|x64.Build.0 = Debug|Any CPU
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Release|Any CPU.Build.0 = Release|Any CPU
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Release|x64.ActiveCfg = Release|Any CPU
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19}.Release|x64.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {33A732D1-2B58-4FEE-9696-B9483496229F} = {CA6AB459-A31A-4C15-B1A6-A82C349B54B4}
- {0DC7F5A2-E963-4E7F-BD37-6F7864B726F2} = {81B3B5D1-70F6-4979-AC76-003F9A6B316B}
- {9531E3D2-217B-4446-98E8-E48F0FDD1452} = {28800357-C8CE-4CD0-A2AD-D4A910ABB496}
- {F947BC6A-2943-4AC7-ACA7-F17351E25FE7} = {9531E3D2-217B-4446-98E8-E48F0FDD1452}
- {A6B14415-D316-4955-BE5F-725BB2DEBEBE} = {28800357-C8CE-4CD0-A2AD-D4A910ABB496}
- {E571E686-01A0-44D5-BFF5-B7678284258B} = {A6B14415-D316-4955-BE5F-725BB2DEBEBE}
- {1C3591CE-7521-4BE4-8B24-626AD92F7B19} = {CA6AB459-A31A-4C15-B1A6-A82C349B54B4}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {A0750637-2CCB-4139-B25E-F2CE740DCFAC}
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
-EndGlobal
diff --git a/libs/storage/Tsavorite/cs/Tsavorite.slnx b/libs/storage/Tsavorite/cs/Tsavorite.slnx
new file mode 100644
index 00000000000..98ad76672ce
--- /dev/null
+++ b/libs/storage/Tsavorite/cs/Tsavorite.slnx
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/storage/Tsavorite/cs/benchmark/YCSB.benchmark/scripts/run_benchmark.ps1 b/libs/storage/Tsavorite/cs/benchmark/YCSB.benchmark/scripts/run_benchmark.ps1
index 42731c09dc1..f68d4f9a545 100644
--- a/libs/storage/Tsavorite/cs/benchmark/YCSB.benchmark/scripts/run_benchmark.ps1
+++ b/libs/storage/Tsavorite/cs/benchmark/YCSB.benchmark/scripts/run_benchmark.ps1
@@ -14,7 +14,7 @@
directory to traverse to Tsavorite.benchmark.exe. Name these folders something that indicates their role, such as 'baseline', 'main' / 'branch', etc.
-or-
B. Supply branch names to be built: In the ExeDirs argument, pass the names of all branches you want to run. For each branch name, this script will clone that branch into
- a directory named as that branch, build Tsavorite.sln for Release, and run the Tsavorite.benchmark.exe from its built location.
+ a directory named as that branch, build Tsavorite.slnx for Release, and run the Tsavorite.benchmark.exe from its built location.
3. Copy this script and, if you will want to compare runs on the perf machine, compare_runs.ps1 to the perf folder.
4. In a remote desktop on the perf machine, change to your folder, and run this file with those directory names. See .EXAMPLE for details.
@@ -110,7 +110,7 @@ if ($CloneAndBuild) {
git clone https://github.com/microsoft/Garnet.git $branch
cd $branch
git checkout $branch
- dotnet build libs\storage\Tsavorite\cs\Tsavorite.sln -c Release
+ dotnet build libs\storage\Tsavorite\cs\Tsavorite.slnx -c Release
cd ..
}
} else {
diff --git a/test/BDNPerfTests/BDN_Benchmark_Config.json b/test/BDNPerfTests/BDN_Benchmark_Config.json
index d63de49bc35..8938948564e 100644
--- a/test/BDNPerfTests/BDN_Benchmark_Config.json
+++ b/test/BDNPerfTests/BDN_Benchmark_Config.json
@@ -1,7 +1,7 @@
{
"_comment": "NOTE: If adding a new BDN perf test to this file, you will need to add the name to the test: line in ci-bdnbenchmark.yml (~line 45). This ensures all the tests are not ran sequentially when ran as github action.",
"_comment2": "NOTE: The BDN Perf name in the ci-bdnbenchmark.yml file test: line should NOT have the BDN.benchmark prefix and the .* ending. It needs to be this way for the reporting part of the BDN Charts.",
- "_comment3": "NOTE: The expected values are the Allocated results from BDN tests. The values listed here are used for Windows / Linux and Net 8.0 and Net 9.0. In the case where one configuration is higher, set that higher value here.",
+ "_comment3": "NOTE: The expected values are the Allocated results from BDN tests. The values listed here are used for Windows / Linux and .NET 8 and 9. In the case where one configuration is higher, set that higher value here.",
"_comment4": "NOTE: If the expected values are not highly deterministic, it is advisable to avoid failing the test when these values are out of compliance. To prevent false failures, prepend WARN-ON-FAIL_ instead of expected_ to each expected value. This ensures the values are checked and will only generate warnings without causing a pipeline failure. The values will still be included in the charts, even if they are marked as warnings.",
"BDN.benchmark.Operations.BasicOperations.*": {
diff --git a/website/docs/dev/onboarding.md b/website/docs/dev/onboarding.md
index dfce20d40c0..22504f06719 100644
--- a/website/docs/dev/onboarding.md
+++ b/website/docs/dev/onboarding.md
@@ -16,12 +16,12 @@ For an introduction to Garnet and its capabilities, you can start with [Welcome
- [RESP specification](https://redis.io/docs/reference/protocol-spec/)
- [Redis data types](https://redis.io/docs/data-types/)
-- [FASTER](https://microsoft.github.io/FASTER/docs/fasterkv-basics/), which we forked for use in Garnet
+- [FASTER](https://microsoft.github.io/FASTER/docs/fasterkv-basics/), which we forked for use in Garnet as [Tsavorite](tsavorite/intro.md)
### Tools
-- Visual Studio 2022 (Preview version recommended)
-- .NET 8.x
+- Visual Studio 2026 (Preview version recommended)
+- .NET 10 SDK
- Git
- Azure Windows VM
- Azure Linux VM
@@ -44,7 +44,7 @@ After cloning the repository you can either run the unit tests or run the server
2. Run the tests suite
```bash
- dotnet test -c Release -l "console;verbosity=detailed"
+dotnet test -c Release -f net9.0 -l "console;verbosity=detailed"
```
3. Run the server
@@ -53,7 +53,7 @@ Using a size memory of 4 GB and index size of 64 MB:
```bash
cd /main/GarnetServer/
-dotnet run -c Debug -f net8.0 -- --logger-level Trace -m 4g -i 64m
+dotnet run -c Debug -f net9.0 -- --logger-level Trace -m 4g -i 64m
```
4. Use the Memurai client in Windows to send commands to Garnet. A guide about how to install Memurai on Windows can be found [here](https://docs.memurai.com/en/installation.html).
@@ -165,7 +165,7 @@ public bool DbScan(ArgSlice patternB, bool allKeys, long cursor, out long storeC
* As a good practice, follow the camel case C# naming convention.
-## Structure of the Garnet.sln Visual Studio Solution File
+## Garnet project structure
* Refer to the Code Structure page for details [here](../dev/code-structure.md).
@@ -179,10 +179,10 @@ public bool DbScan(ArgSlice patternB, bool allKeys, long cursor, out long storeC
## Test
-As a sanity check, you can run the Garnet test suite. The command to run tests in Release mode for .NET 8 is shown below (make sure you are in the root folder of the repo).
+As a sanity check, you can run the Garnet test suite. The command to run tests in Release mode for .NET 9 is shown below (make sure you are in the root folder of the repo).
``` bash
- dotnet test -c Release -f net8.0 -l "console;verbosity=detailed"
+dotnet test -c Release -f net9.0 -l "console;verbosity=detailed"
```
Note that Tsavorite has its own solution file and test suite in the folder ``/Garnet/libs/storage/Tsavorite.
diff --git a/website/docs/getting-started/build.md b/website/docs/getting-started/build.md
index a3ebc673144..724ffa99dc4 100644
--- a/website/docs/getting-started/build.md
+++ b/website/docs/getting-started/build.md
@@ -15,22 +15,21 @@ git clone git@github.com:microsoft/garnet.git
## Build the Project
-Make sure .NET 8 is installed, following instructions [here](https://dotnet.microsoft.com/en-us/download). You can use either Linux or Windows; Garnet works equally well on both platforms.
+Make sure .NET 10 SDK is installed, following instructions [here](https://dotnet.microsoft.com/en-us/download). You can use either Linux or Windows; Garnet works equally well on both platforms.
-Go to the root folder of the repo and build using dotnet, or open Garnet.sln and build using Visual Studio 2022 (we recommend the Preview version for the latest features). Make sure Visual Studio is up to date by checking for updates.
+Go to the root folder of the repo and build using .NET CLI, or open `Garnet.slnx` and build using latest Visual Studio 2026 (we recommend using latest Visual Studio 2026 Insiders).
```bash
cd garnet
-dotnet restore
dotnet build -c Release
```
# Run our Test Suite
-As a sanity check, you can run our test suite. The command to run tests in Release mode for .NET 8 with verbose output to console is shown below (make sure you are in the root folder of the repo).
+As a sanity check, you can run our test suite. The command to run tests in Release mode for .NET 9 target with verbose output to console is shown below (make sure you are in the root folder of the repo).
```bash
-dotnet test -c Release -f net8.0 -l "console;verbosity=detailed"
+dotnet test -c Release -f net9.0 -l "console;verbosity=detailed"
```
:::tip
@@ -43,25 +42,25 @@ Now, you are ready to deploy the Garnet server. This is simple, run the below:
```bash
cd main/GarnetServer
-dotnet run -c Release -f net8.0
+dotnet run -c Release -f net9.0
```
:::tip
-By default, Garnet listens to TCP port 6379, make sure to adjust your firewall settings when you need to access the server from remote machines.
-Also, note that Garnet by default listens to the IPAddress.Any and IPAddress.IPv6Any endpoints.
+By default, Garnet listens to TCP port `6379`, make sure to adjust your firewall settings when you need to access the server from remote machines.
+Also, note that Garnet by default listens to the `IPAddress.Any` and `IPAddress.IPv6Any` endpoints.
Please make sure to adjust these based on your requirements.
:::
To see the configurable options and their defaults, run the below command. You can configure index size, memory size, page size, data file paths and checkpoint paths, IP address to bind to, port number to run on, etc.
```bash
-dotnet run -c Release -f net8.0 -- --help
+dotnet run -c Release -f net9.0 -- --help
```
:::tip
For running the server with an index size of 512MB (instead of the default), run this:
```bash
-dotnet run -c Release -f net8.0 -- -i 512m
+dotnet run -c Release -f net9.0 -- -i 512m
```
:::
@@ -69,14 +68,14 @@ dotnet run -c Release -f net8.0 -- -i 512m
Garnet uses the RESP protocol, so you can use any Redis client in your favorite client language to talk to the Garnet server. For C# applications, you can either use StackExchange.Redis or our own C# client, called GarnetClient.
-On Windows, You can use RedisInsight which has a graphical interface and a cli, or install Memurai
+On Windows, You can use [RedisInsight](https://github.com/RedisInsight/RedisInsight) which has a graphical interface and a cli, or install [Memurai](https://www.memurai.com/)
(which offers Redis on Windows) and use their **memurai-cli** command line tool. You can also use **redis-cli** on WSL with the below configuration.
-- Start GarnetServer in Windows, listening to `0.0.0.0` (IPAddress.Any). Use the argument `--bind 0.0.0.0` if necessary.
+- Start GarnetServer in Windows, listening to `0.0.0.0` (`IPAddress.Any`). Use the argument `--bind 0.0.0.0` if necessary.
- Add `GarnetServer.exe` to firewall exceptions (Windows Defender Firewall -> Allow an app through Windows Firewall)
- On WSL, get the host IP address using `ip route show | grep -i default | awk '{ print $3}'`
- Connect from WSL using `redis-cli -h `
If the above does not work to connect from WSL, you can try the [mirrored networking mode](https://learn.microsoft.com/en-us/windows/wsl/networking#mirrored-mode-networking) available in Windows 11 22H2 or later.
-With any of these clients, just make sure to use the correct port (e.g., 6379) when connecting to a Garnet server.
+With any of these clients, just make sure to use the correct port (e.g., `6379`) when connecting to a Garnet server.