Repository navigation
[fix] Fix swapped MSTest.TestAdapter/TestFramework version variablesΒ #16554
Description
Tip
Your pull request is ready to create! π β
Everything is OKβthe changes have been pushed to branch fix/issue-16553-swapped-mstest-versions-ae8c984daff9af45. Please review the changes, including any protected files, before creating the pull request.
The original pull request description is below.
π€ This is an automated fix created by the Issue Repro Triage & Auto-Fix workflow.
Fixes part of #16553 (Task 1: "Fix swapped MSTest adapter/framework version variables (latent drift bug)").
Root cause
Five test asset .csproj files had the MSTest.TestAdapter and MSTest.TestFramework PackageReference versions wired to the wrong MSBuild property (or, in one case, both wired to the same property):
test/TestAssets/performance/MSTest1Passing/MSTest1Passing.csprojtest/TestAssets/performance/MSTest100Passing/MSTest100Passing.csprojtest/TestAssets/performance/MSTest1000Passing/MSTest1000Passing.csprojtest/TestAssets/performance/MSTest10kPassing/MSTest10kPassing.csprojtest/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj
In the four performance/* projects, MSTest.TestAdapter used $(MSTestTestFrameworkVersion) and MSTest.TestFramework used $(MSTestTestAdapterVersion) β swapped. In NewtonSoftDependency.csproj, both PackageReferences used $(MSTestTestAdapterVersion).
This has had no observable effect so far only because both properties currently equal 4.1.0 in eng/Versions.props. The moment a future version bump updates only one of the two properties, these 5 projects would silently restore a mismatched MSTest adapter/framework pair with no build error β a hard-to-diagnose latent bug.
Fix
Corrected each PackageReference to use its matching property:
MSTest.TestAdapterβ$(MSTestTestAdapterVersion)MSTest.TestFrameworkβ$(MSTestTestFrameworkVersion)
No behavior change today (same resolved versions), but the projects are now resilient to future independent version bumps.
Testing
Built all 5 modified projects individually with dotnet build -c Release β all succeed with 0 warnings / 0 errors. Also ran a full ./build.sh -c Release, which succeeded.
These are test-asset projects used only by performance/integration test tooling, not shipped product code, so no acceptance test was added β the fix is a pure property-reference correction verified by successful restore/build of the affected projects.
Note
GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch
fix/issue-16553-swapped-mstest-versions-ae8c984daff9af45and are ready to review.
To fix the permissions issue, go to Settings β Actions β General and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ
Show patch preview (35 of 101 lines)
From 56607ec61369ddd3cbc8897107e6f63aaeb4af3a Mon Sep 17 00:00:00 2001
X-GH-AW-Base-Commit: 05cd78191d1e42585744353e492f81dc3f2c2470
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Tue, 6 Oct 2026 12:54:59 +0000
Subject: [PATCH] Fix swapped MSTest.TestAdapter/TestFramework version
variables
5 test asset projects had MSTest.TestAdapter wired to
$(MSTestTestFrameworkVersion) and MSTest.TestFramework wired to
$(MSTestTestAdapterVersion) (or, in NewtonSoftDependency's case, both
pointing at $(MSTestTestAdapterVersion)). This was masked because
both properties currently equal 4.1.0 in eng/Versions.props, but any
future bump that changes only one of them would silently restore a
mismatched adapter/framework pair with no build error.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
.../NewtonSoftDependency/NewtonSoftDependency.csproj | 2 +-
.../performance/MSTest1000Passing/MSTest1000Passing.csproj | 4 ++--
.../performance/MSTest100Passing/MSTest100Passing.csproj | 4 ++--
.../performance/MSTest10kPassing/MSTest10kPassing.csproj | 4 ++--
.../performance/MSTest1Passing/MSTest1Passing.csproj | 4 ++--
5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj b/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj
index 0fa2917..7c1d972 100644
--- a/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj
+++ b/test/TestAssets/NewtonSoftDependency/NewtonSoftDependency.csproj
@@ -14,7 +14,7 @@
<ItemGroup>
<PackageReference Include="MSTest.TestAdapter" Version="$(MSTestTestAdapterVersion)" />
- <PackageReference Include="MSTest.TestFramework" Version="$(MSTestTestAdapterVersion)" />
+ <PackageReference Include="MSTest.TestFramework" Version="$(MSTestTestFrameworkVersion)" />
<!-- TODO: This version would ideally be higher than the newtonsoft version we use in TP to show that t
... (truncated)Warning
Firewall blocked 99 domains
The following domains were blocked by the firewall during workflow execution:
0t3vsblobprodcus362.vsblob.vsassets.io11vvsblobprodcus336.vsblob.vsassets.io1javsblobprodcus364.vsblob.vsassets.io1k9vsblobprodcus379.vsblob.vsassets.io1mcvsblobprodwus2174.vsblob.vsassets.io1oavsblobprodcus350.vsblob.vsassets.io1p7vsblobprodcus324.vsblob.vsassets.io1s1vsblobprodcus386.vsblob.vsassets.io2kmvsblobprodcus39.vsblob.vsassets.io2zrvsblobprodcus388.vsblob.vsassets.io31bvsblobprodwus2143.vsblob.vsassets.io37bvsblobprodcus311.vsblob.vsassets.io37cvsblobprodcus359.vsblob.vsassets.io4m6vsblobprodcus384.vsblob.vsassets.io4myvsblobprodcus32.vsblob.vsassets.io4vyvsblobprodcus361.vsblob.vsassets.io4zjvsblobprodcus390.vsblob.vsassets.io51yvsblobprodcus36.vsblob.vsassets.io5dkvsblobprodcus355.vsblob.vsassets.io5rqvsblobprodcus385.vsblob.vsassets.io6s7vsblobprodcus313.vsblob.vsassets.io77qvsblobprodwus2118.vsblob.vsassets.io7devsblobprodcus323.vsblob.vsassets.io7tjvsblobprodcus341.vsblob.vsassets.io80zvsblobprodcus35.vsblob.vsassets.io8xbvsblobprodcus382.vsblob.vsassets.ioajhvsblobprodcus363.vsblob.vsassets.iob15vsblobprodwus2164.vsblob.vsassets.iobalvsblobprodwus2129.vsblob.vsassets.iobcnvsblobprodcus378.vsblob.vsassets.iobuilds.dotnet.microsoft.comc50vsblobprodcus330.vsblob.vsassets.ioc78vsblobprodcus322.vsblob.vsassets.iocflvsblobprodcus383.vsblob.vsassets.ioci.dot.netd0svsblobprodcus381.vsblob.vsassets.iodata.nuget.orgdlbvsblobprodcus316.vsblob.vsassets.ioe7bvsblobprodcus348.vsblob.vsassets.iofaxvsblobprodwus2122.vsblob.vsassets.iofdpvsblobprodcus345.vsblob.vsassets.iofrdvsblobprodcus327.vsblob.vsassets.iogbsvsblobprodcus365.vsblob.vsassets.iogervsblobprodcus329.vsblob.vsassets.ioh6tvsblobprodcus346.vsblob.vsassets.iohd3vsblobprodwus2117.vsblob.vsassets.ioibzvsblobprodcus369.vsblob.vsassets.ioimzvsblobprodcus368.vsblob.vsassets.ioisvvsblobprodwus2147.vsblob.vsassets.iojd4vsblobprodcus366.vsblob.vsassets.iojosvsblobprodcus372.vsblob.vsassets.iojqivsblobprodwus2187.vsblob.vsassets.iojrqvsblobprodcus343.vsblob.vsassets.iok0ivsblobprodcus356.vsblob.vsassets.iok4kvsblobprodcus344.vsblob.vsassets.iok4pvsblobprodwus2140.vsblob.vsassets.iokgfvsblobprodcus314.vsblob.vsassets.iokh4vsblobprodcus325.vsblob.vsassets.iokijvsblobprodcus387.vsblob.vsassets.iokmuvsblobprodcus389.vsblob.vsassets.iokxqvsblobprodcus376.vsblob.vsassets.iol49vsblobprodcus358.vsblob.vsassets.iol7avsblobprodcus319.vsblob.vsassets.ioljcvsblobprodcus317.vsblob.vsassets.iolylvsblobprodcus31.vsblob.vsassets.iom6xvsblobprodcus342.vsblob.vsassets.iom8dvsblobprodcus37.vsblob.vsassets.iomfjvsblobprodcus373.vsblob.vsassets.ion3kvsblobprodcus335.vsblob.vsassets.ionn8vsblobprodcus340.vsblob.vsassets.ioofvvsblobprodcus315.vsblob.vsassets.iop2ovsblobprodcus312.vsblob.vsassets.iopc2vsblobprodcus360.vsblob.vsassets.iopdfvsblobprodcus380.vsblob.vsassets.iope3vsblobprodcus354.vsblob.vsassets.iope4vsblobprodcus351.vsblob.vsassets.iopkgs.dev.azure.compkvvsblobprodcus321.vsblob.vsassets.iorcxvsblobprodcus328.vsblob.vsassets.ios8mvsblobprodcus38.vsblob.vsassets.iose1vsblobprodcus349.vsblob.vsassets.iosouthcentralus0.in.applicationinsights.azure.comsqdvsblobprodcus333.vsblob.vsassets.iotn2vsblobprodwus2124.vsblob.vsassets.iotphvsblobprodcus375.vsblob.vsassets.iou3hvsblobprodcus371.vsblob.vsassets.iou6ovsblobprodcus377.vsblob.vsassets.ioukkvsblobprodcus352.vsblob.vsassets.iouy6vsblobprodcus34.vsblob.vsassets.iovb4vsblobprodcus33.vsblob.vsassets.iovd2vsblobprodwus2150.vsblob.vsassets.iovwvvsblobprodcus334.vsblob.vsassets.iowlnvsblobprodwus2188.vsblob.vsassets.iox3yvsblobprodcus370.vsblob.vsassets.ioxupvsblobprodcus332.vsblob.vsassets.ioyluvsblobprodcus367.vsblob.vsassets.ioyttvsblobprodcus357.vsblob.vsassets.ioz2bvsblobprodwus2185.vsblob.vsassets.iozugvsblobprodwus2169.vsblob.vsassets.io
To allow these domains, add them to the network.allowed list in your workflow frontmatter:
network:
allowed:
- defaults
- "0t3vsblobprodcus362.vsblob.vsassets.io"
- "11vvsblobprodcus336.vsblob.vsassets.io"
- "1javsblobprodcus364.vsblob.vsassets.io"
- "1k9vsblobprodcus379.vsblob.vsassets.io"
- "1mcvsblobprodwus2174.vsblob.vsassets.io"
- "1oavsblobprodcus350.vsblob.vsassets.io"
- "1p7vsblobprodcus324.vsblob.vsassets.io"
- "1s1vsblobprodcus386.vsblob.vsassets.io"
- "2kmvsblobprodcus39.vsblob.vsassets.io"
- "2zrvsblobprodcus388.vsblob.vsassets.io"
- "31bvsblobprodwus2143.vsblob.vsassets.io"
- "37bvsblobprodcus311.vsblob.vsassets.io"
- "37cvsblobprodcus359.vsblob.vsassets.io"
- "4m6vsblobprodcus384.vsblob.vsassets.io"
- "4myvsblobprodcus32.vsblob.vsassets.io"
- "4vyvsblobprodcus361.vsblob.vsassets.io"
- "4zjvsblobprodcus390.vsblob.vsassets.io"
- "51yvsblobprodcus36.vsblob.vsassets.io"
- "5dkvsblobprodcus355.vsblob.vsassets.io"
- "5rqvsblobprodcus385.vsblob.vsassets.io"
- "6s7vsblobprodcus313.vsblob.vsassets.io"
- "77qvsblobprodwus2118.vsblob.vsassets.io"
- "7devsblobprodcus323.vsblob.vsassets.io"
- "7tjvsblobprodcus341.vsblob.vsassets.io"
- "80zvsblobprodcus35.vsblob.vsassets.io"
- "8xbvsblobprodcus382.vsblob.vsassets.io"
- "ajhvsblobprodcus363.vsblob.vsassets.io"
- "b15vsblobprodwus2164.vsblob.vsassets.io"
- "balvsblobprodwus2129.vsblob.vsassets.io"
- "bcnvsblobprodcus378.vsblob.vsassets.io"
- "builds.dotnet.microsoft.com"
- "c50vsblobprodcus330.vsblob.vsassets.io"
- "c78vsblobprodcus322.vsblob.vsassets.io"
- "cflvsblobprodcus383.vsblob.vsassets.io"
- "ci.dot.net"
- "d0svsblobprodcus381.vsblob.vsassets.io"
- "data.nuget.org"
- "dlbvsblobprodcus316.vsblob.vsassets.io"
- "e7bvsblobprodcus348.vsblob.vsassets.io"
- "faxvsblobprodwus2122.vsblob.vsassets.io"
- "fdpvsblobprodcus345.vsblob.vsassets.io"
- "frdvsblobprodcus327.vsblob.vsassets.io"
- "gbsvsblobprodcus365.vsblob.vsassets.io"
- "gervsblobprodcus329.vsblob.vsassets.io"
- "h6tvsblobprodcus346.vsblob.vsassets.io"
- "hd3vsblobprodwus2117.vsblob.vsassets.io"
- "ibzvsblobprodcus369.vsblob.vsassets.io"
- "imzvsblobprodcus368.vsblob.vsassets.io"
- "isvvsblobprodwus2147.vsblob.vsassets.io"
- "jd4vsblobprodcus366.vsblob.vsassets.io"
- "josvsblobprodcus372.vsblob.vsassets.io"
- "jqivsblobprodwus2187.vsblob.vsassets.io"
- "jrqvsblobprodcus343.vsblob.vsassets.io"
- "k0ivsblobprodcus356.vsblob.vsassets.io"
- "k4kvsblobprodcus344.vsblob.vsassets.io"
- "k4pvsblobprodwus2140.vsblob.vsassets.io"
- "kgfvsblobprodcus314.vsblob.vsassets.io"
- "kh4vsblobprodcus325.vsblob.vsassets.io"
- "kijvsblobprodcus387.vsblob.vsassets.io"
- "kmuvsblobprodcus389.vsblob.vsassets.io"
- "kxqvsblobprodcus376.vsblob.vsassets.io"
- "l49vsblobprodcus358.vsblob.vsassets.io"
- "l7avsblobprodcus319.vsblob.vsassets.io"
- "ljcvsblobprodcus317.vsblob.vsassets.io"
- "lylvsblobprodcus31.vsblob.vsassets.io"
- "m6xvsblobprodcus342.vsblob.vsassets.io"
- "m8dvsblobprodcus37.vsblob.vsassets.io"
- "mfjvsblobprodcus373.vsblob.vsassets.io"
- "n3kvsblobprodcus335.vsblob.vsassets.io"
- "nn8vsblobprodcus340.vsblob.vsassets.io"
- "ofvvsblobprodcus315.vsblob.vsassets.io"
- "p2ovsblobprodcus312.vsblob.vsassets.io"
- "pc2vsblobprodcus360.vsblob.vsassets.io"
- "pdfvsblobprodcus380.vsblob.vsassets.io"
- "pe3vsblobprodcus354.vsblob.vsassets.io"
- "pe4vsblobprodcus351.vsblob.vsassets.io"
- "pkgs.dev.azure.com"
- "pkvvsblobprodcus321.vsblob.vsassets.io"
- "rcxvsblobprodcus328.vsblob.vsassets.io"
- "s8mvsblobprodcus38.vsblob.vsassets.io"
- "se1vsblobprodcus349.vsblob.vsassets.io"
- "southcentralus0.in.applicationinsights.azure.com"
- "sqdvsblobprodcus333.vsblob.vsassets.io"
- "tn2vsblobprodwus2124.vsblob.vsassets.io"
- "tphvsblobprodcus375.vsblob.vsassets.io"
- "u3hvsblobprodcus371.vsblob.vsassets.io"
- "u6ovsblobprodcus377.vsblob.vsassets.io"
- "ukkvsblobprodcus352.vsblob.vsassets.io"
- "uy6vsblobprodcus34.vsblob.vsassets.io"
- "vb4vsblobprodcus33.vsblob.vsassets.io"
- "vd2vsblobprodwus2150.vsblob.vsassets.io"
- "vwvvsblobprodcus334.vsblob.vsassets.io"
- "wlnvsblobprodwus2188.vsblob.vsassets.io"
- "x3yvsblobprodcus370.vsblob.vsassets.io"
- "xupvsblobprodcus332.vsblob.vsassets.io"
- "yluvsblobprodcus367.vsblob.vsassets.io"
- "yttvsblobprodcus357.vsblob.vsassets.io"
- "z2bvsblobprodwus2185.vsblob.vsassets.io"
- "zugvsblobprodwus2169.vsblob.vsassets.io"See Network Configuration for more information.
π Triaged by Issue Repro Triage & Auto-Fix π
Activity