用途:将测试项目从 MSTest v1(Microsoft.VisualStudio.QualityTools.UnitTestFramework 程序集引用)或 MSTest v2(MSTest.TestFramework / MSTest.TestAdapter NuGet 1.x-2.x)迁移到 MSTest v3。MSTest v3 与 v1/v2 不二进制兼容,旧库需重新编译。
主要能力:先在工作区定位项目并按 v1、v2、部分迁移 v3、已完成 v3 分类;迁移路径为移除 v1 程序集引用(或直接升级 v2 包版本)、改用 v3 包、处理破坏性变更。常见变更包括:AreEqual(object, object) 被泛型 AreEqual<T> 取代(CS0411/CS1503 时显式写 Assert.AreEqual<object>);DataRow 严格类型匹配(需精确字面量类型);支持 3.0.3+ 后 DataRow 参数上限取消;.testsettings/<LegacySettings> 不再支持,改用 .runsettings;超时、测试 ID、TargetInvocationException、部署目录、可空注解等行为变化;被移除的目标框架需替换(如 .NET 5→net8.0)。
使用方式:默认安装 MSTest 元包(如 <PackageReference Include="MSTest" Version="3.8.0" />),保留 Microsoft.NET.Test.Sdk 并升级到兼容版本;也可在用户要求或仓库统一时使用 MSTest.Sdk/3.8.0,默认走 Microsoft.Testing.Platform,需保留 VSTest 时设置 <UseVSTest>true</UseVSTest>;不要仅因框架升级切换运行器。先自行查找项目文件与配置,按需更新 TFM,修复实际存在的破坏性变更并验证。
适用场景:v1/v2 升级或修复、升级包后解决构建错误、替换 .testsettings、采用 MSTest.Sdk 或程序集内并行。限制:已完成 v3 迁移且无遗留配置时不应再改;v3→v4 用 migrate-mstest-v3-to-v4;跨框架迁移(如 xUnit/NUnit)不适用;不要凭猜测修改可编译代码。