用途:把使用 MSTest v1(程序集引用)或 v2(NuGet 1.x-2.x)的测试项目迁移到 MSTest v3。v3 与 v1/v2 不二进制兼容,针对旧版编译的库需重新编译。
主要能力:识别当前版本(v1 看 Microsoft.VisualStudio.QualityTools.UnitTestFramework 引用,v2 看 MSTest.TestFramework/TestAdapter 包版本);移除 v1 程序集引用;升级到 v3 包(可用 MSTest 元包 <PackageReference Include="MSTest" Version="3.8.0" />,或改用 MSTest.Sdk/3.8.0);更新被弃用的目标框架;修复破坏性变更;用 .runsettings 替换 .testsettings。
关键破坏性变更:移除 Assert.AreEqual(object, object) 等非泛型重载,需改为 Assert.AreEqual<T>(expected, actual);DataRow 参数类型须严格匹配(如 1L 改 1、1.0 改 1.0f);.testsettings 与 <LegacySettings> 不再支持;超时行为在 .NET Core/Framework 统一;弃用 .NET 5、.NET Fx < 4.6.2、netstandard1.0、UWP < 16299、WinUI < 18362。
使用方式:先评估项目并建立构建基线,再按路径处理(v1 先删引用,v2 直接升包),随后更新包与目标框架,运行 dotnet build 修复错误,替换配置文件,最后 dotnet test 验证并与迁移前通过/失败数对比。
限制:不适用于已完全迁移到 v3 的项目、v3 升 v4(用 migrate-mstest-v3-to-v4)或跨框架迁移(如转 xUnit/NUnit)。MSTest.Sdk 默认使用 Microsoft.Testing.Platform,若需 VSTest 兼容须显式添加 Microsoft.NET.Test.Sdk。