From f5ad652ce151fb94f21facfe8cc4eea9d8bf115b Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Feb 2026 16:33:22 +0000
Subject: [PATCH 1/6] Initial plan
From 38dcf26af1a678599a95fc7043c1f554c6aa4e1e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Feb 2026 16:38:34 +0000
Subject: [PATCH 2/6] Add netstandard2.0 test project targeting net8.0
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
---
ModelContextProtocol.slnx | 1 +
...ontextProtocol.Netstandard2_0.Tests.csproj | 83 +++++++++++++++++++
2 files changed, 84 insertions(+)
create mode 100644 tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj
diff --git a/ModelContextProtocol.slnx b/ModelContextProtocol.slnx
index 64e834b35..f19a76257 100644
--- a/ModelContextProtocol.slnx
+++ b/ModelContextProtocol.slnx
@@ -73,6 +73,7 @@
+
diff --git a/tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj b/tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj
new file mode 100644
index 000000000..57568e1f0
--- /dev/null
+++ b/tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj
@@ -0,0 +1,83 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+ true
+
+ false
+ true
+ ModelContextProtocol.Tests
+
+ $(NoWarn);NU1903;NU1902
+
+ $(DefineConstants);MCP_TEST_TIME_PROVIDER
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+ TargetFramework=netstandard2.0
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
From eea465db9483298a0e76f8cfafbe37707738ce45 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Feb 2026 16:41:13 +0000
Subject: [PATCH 3/6] Add README for netstandard2.0 test project
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
---
.../README.md | 44 +++++++++++++++++++
1 file changed, 44 insertions(+)
create mode 100644 tests/ModelContextProtocol.Netstandard2_0.Tests/README.md
diff --git a/tests/ModelContextProtocol.Netstandard2_0.Tests/README.md b/tests/ModelContextProtocol.Netstandard2_0.Tests/README.md
new file mode 100644
index 000000000..d81f9c99f
--- /dev/null
+++ b/tests/ModelContextProtocol.Netstandard2_0.Tests/README.md
@@ -0,0 +1,44 @@
+# ModelContextProtocol.Netstandard2_0.Tests
+
+This test project provides cross-platform testing of the `netstandard2.0` build of `ModelContextProtocol.Core`.
+
+## Purpose
+
+The main test project (`ModelContextProtocol.Tests`) targets multiple frameworks including `net472`, which only runs on Windows. This creates a gap for developers on non-Windows platforms who want to test the `netstandard2.0` build.
+
+This project solves that by:
+1. Targeting `net8.0` (stable, cross-platform)
+2. Forcing `ModelContextProtocol.Core` to use its `netstandard2.0` build via `SetTargetFramework`
+3. Including all test source files from the main test project
+
+## Key Features
+
+- **Cross-platform**: Runs on Windows, Linux, and macOS using the modern .NET runtime
+- **netstandard2.0 testing**: Verifies the netstandard2.0 build without requiring .NET Framework or mono
+- **Shared tests**: Uses the same test source files as `ModelContextProtocol.Tests` to ensure consistency
+
+## How It Works
+
+The project uses the MSBuild `SetTargetFramework` property on the project reference to force the referenced project to build for a specific target framework:
+
+```xml
+
+ TargetFramework=netstandard2.0
+
+```
+
+This allows the test project (targeting `net8.0`) to reference and test the `netstandard2.0` build of `ModelContextProtocol.Core`.
+
+## Running Tests
+
+```bash
+# Run all tests
+dotnet test tests/ModelContextProtocol.Netstandard2_0.Tests
+
+# Run with filter
+dotnet test tests/ModelContextProtocol.Netstandard2_0.Tests --filter '(Execution!=Manual)'
+```
+
+## Reference
+
+This pattern is based on the approach used by [googleapis/dotnet-genai](https://github.com/googleapis/dotnet-genai/blob/f0d9a3eb970e91293b806dac49853b68e4ddcdca/Google.GenAI.Tests/Netstandard2_0Tests/Google.GenAI.Netstandard2_0.Tests.csproj).
From 753cc88a2e14b5449082977aa7e9c9370e07fe06 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Feb 2026 16:55:47 +0000
Subject: [PATCH 4/6] Use conditional SetTargetFramework in existing test
project instead of separate project
On non-Windows platforms, the net8.0 test target now forces netstandard2.0 build of ModelContextProtocol.Core via conditional SetTargetFramework. This provides cross-platform netstandard2.0 test coverage without requiring a separate test project.
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
---
ModelContextProtocol.slnx | 1 -
...ontextProtocol.Netstandard2_0.Tests.csproj | 83 -------------------
.../README.md | 44 ----------
.../ModelContextProtocol.Tests.csproj | 5 +-
4 files changed, 4 insertions(+), 129 deletions(-)
delete mode 100644 tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj
delete mode 100644 tests/ModelContextProtocol.Netstandard2_0.Tests/README.md
diff --git a/ModelContextProtocol.slnx b/ModelContextProtocol.slnx
index f19a76257..64e834b35 100644
--- a/ModelContextProtocol.slnx
+++ b/ModelContextProtocol.slnx
@@ -73,7 +73,6 @@
-
diff --git a/tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj b/tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj
deleted file mode 100644
index 57568e1f0..000000000
--- a/tests/ModelContextProtocol.Netstandard2_0.Tests/ModelContextProtocol.Netstandard2_0.Tests.csproj
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
- Exe
- net8.0
- enable
- enable
- true
-
- false
- true
- ModelContextProtocol.Tests
-
- $(NoWarn);NU1903;NU1902
-
- $(DefineConstants);MCP_TEST_TIME_PROVIDER
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
-
- TargetFramework=netstandard2.0
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
diff --git a/tests/ModelContextProtocol.Netstandard2_0.Tests/README.md b/tests/ModelContextProtocol.Netstandard2_0.Tests/README.md
deleted file mode 100644
index d81f9c99f..000000000
--- a/tests/ModelContextProtocol.Netstandard2_0.Tests/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# ModelContextProtocol.Netstandard2_0.Tests
-
-This test project provides cross-platform testing of the `netstandard2.0` build of `ModelContextProtocol.Core`.
-
-## Purpose
-
-The main test project (`ModelContextProtocol.Tests`) targets multiple frameworks including `net472`, which only runs on Windows. This creates a gap for developers on non-Windows platforms who want to test the `netstandard2.0` build.
-
-This project solves that by:
-1. Targeting `net8.0` (stable, cross-platform)
-2. Forcing `ModelContextProtocol.Core` to use its `netstandard2.0` build via `SetTargetFramework`
-3. Including all test source files from the main test project
-
-## Key Features
-
-- **Cross-platform**: Runs on Windows, Linux, and macOS using the modern .NET runtime
-- **netstandard2.0 testing**: Verifies the netstandard2.0 build without requiring .NET Framework or mono
-- **Shared tests**: Uses the same test source files as `ModelContextProtocol.Tests` to ensure consistency
-
-## How It Works
-
-The project uses the MSBuild `SetTargetFramework` property on the project reference to force the referenced project to build for a specific target framework:
-
-```xml
-
- TargetFramework=netstandard2.0
-
-```
-
-This allows the test project (targeting `net8.0`) to reference and test the `netstandard2.0` build of `ModelContextProtocol.Core`.
-
-## Running Tests
-
-```bash
-# Run all tests
-dotnet test tests/ModelContextProtocol.Netstandard2_0.Tests
-
-# Run with filter
-dotnet test tests/ModelContextProtocol.Netstandard2_0.Tests --filter '(Execution!=Manual)'
-```
-
-## Reference
-
-This pattern is based on the approach used by [googleapis/dotnet-genai](https://github.com/googleapis/dotnet-genai/blob/f0d9a3eb970e91293b806dac49853b68e4ddcdca/Google.GenAI.Tests/Netstandard2_0Tests/Google.GenAI.Netstandard2_0.Tests.csproj).
diff --git a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
index 3aba865b5..234f99e64 100644
--- a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
+++ b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
@@ -78,7 +78,10 @@
-
+
+
+ TargetFramework=netstandard2.0
+
From db11c07e86a84d15554c6be6c08511196261fae5 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Feb 2026 18:34:09 +0000
Subject: [PATCH 5/6] Remove platform-specific DefaultTestTargetFrameworks and
apply SetTargetFramework to all platforms
- Removed conditional net472 addition to DefaultTestTargetFrameworks on Windows
- Changed SetTargetFramework to apply to all platforms (not just non-Windows)
- Now all platforms test net10.0, net9.0, and net8.0, with net8.0 using netstandard2.0 build
- This provides consistent netstandard2.0 test coverage across all platforms
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
---
Directory.Build.props | 3 +--
.../ModelContextProtocol.Tests.csproj | 4 ++--
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/Directory.Build.props b/Directory.Build.props
index f5cdd3aad..4200f7b4f 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -47,8 +47,7 @@
-
+
net10.0;net9.0;net8.0
- $(DefaultTestTargetFrameworks);net472
diff --git a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
index 234f99e64..ed6987d0c 100644
--- a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
+++ b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
@@ -79,8 +79,8 @@
-
- TargetFramework=netstandard2.0
+
+ TargetFramework=netstandard2.0
From 259aee5bdc0e5cdea75ee7f0d6233093e6b680ad Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 2 Feb 2026 18:54:35 +0000
Subject: [PATCH 6/6] Revert "Remove platform-specific
DefaultTestTargetFrameworks"
This reverts the changes from commit db11c07. The approach of removing net472 on Windows was incorrect. We need to maintain both:
1. net472 tests on Windows (for netstandard2.0 testing on .NET Framework)
2. Conditional SetTargetFramework on non-Windows (for netstandard2.0 testing on modern .NET)
Restoring the configuration where:
- Windows tests: net10.0, net9.0, net8.0, net472
- Non-Windows tests: net10.0, net9.0, net8.0 (with net8.0 using netstandard2.0 build)
Co-authored-by: eiriktsarpalis <2813363+eiriktsarpalis@users.noreply.github.com>
---
Directory.Build.props | 3 ++-
.../ModelContextProtocol.Tests.csproj | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/Directory.Build.props b/Directory.Build.props
index 4200f7b4f..f5cdd3aad 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -47,7 +47,8 @@
-
+
net10.0;net9.0;net8.0
+ $(DefaultTestTargetFrameworks);net472
diff --git a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
index ed6987d0c..234f99e64 100644
--- a/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
+++ b/tests/ModelContextProtocol.Tests/ModelContextProtocol.Tests.csproj
@@ -79,8 +79,8 @@
-
- TargetFramework=netstandard2.0
+
+ TargetFramework=netstandard2.0