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