Test run will use DLL(s) built for framework .NETFramework,Version=v4.5 and platform X86. Following DLL(s) do not match framework/platform settings.
所以所有的测试都被跳过了,因为它们针对的是4.7.1。这个4.5的设置从哪里来?我找不到任何指定它的地方,也无法弄清楚如何更改它。
Test run will use DLL(s) built for framework .NETFramework,Version=v4.5 and platform X86. Following DLL(s) do not match framework/platform settings.
所以所有的测试都被跳过了,因为它们针对的是4.7.1。这个4.5的设置从哪里来?我找不到任何指定它的地方,也无法弄清楚如何更改它。
您可以在VSTest中指定一个名为/Framework:
的参数。
在您的情况下,您应该指定/Framework:.NETFramework,Version=v4.7.1
请参阅https://msdn.microsoft.com/en-us/library/jj155796.aspx?f=255&mspperror=-2147217396以获取更多信息。
要在Azure DepOps yaml管道中添加此参数,请使用otherConsoleOptions
参数。
- task: VSTest@2
otherConsoleOptions: '/Framework:.NETFramework,Version=v4.7.1'
对于我来说,在本地运行VS2022时跳过测试与testsettings文件有关。我删除了我的项目的.vs文件夹,然后选择 测试->配置运行设置->选择自动检测运行设置文件 之后,我就可以调试单元测试了。
<Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props')" />
希望这个答案能帮助节省您的时间。我在使用Visual Studio 2019和NUnit 3.12.0时遇到了这个错误:
测试运行将使用为.NETFramework,版本为v4.5和平台X86构建的DLL。以下DLL与框架/平台设置不匹配。 Project.UnitTests.dll是为Framework 4.5.2和Platform AnyCPU构建的。
安装了NUnit3TestAdapter 3.13.0,然后一切都开始正常工作了。不需要修改框架版本或CPU设置。
事实证明还有另一个问题。对于我的其他 .NET Framework 测试项目,我已经定义了 *.runsettings 文件。测试运行将使用为框架 .NETFramework,Version=v4.0 和平台 X64 构建的 DLL。以下 DLL 不符合框架/平台设置。MyProject.Tests.dll 是为框架 .NETCoreApp,Version=v3.1 和平台 AnyCPU 构建的。
在这个文件中我有
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime -->
<TestRunParameters>
<Parameter name="ConnectionString" value="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True" />
</TestRunParameters>
<RunConfiguration>
<!-- Framework35 | [Framework40] | Framework45 | FrameworkCore10-->
<TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
</RunConfiguration>
</RunSettings>
基于https://learn.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2019,支持的TargerFrameworkVersions值如下:
FrameworkCore10适用于.NET Core源代码,FrameworkUap10适用于基于UWP的源代码,Framework45适用于.NET Framework 4.5及更高版本,Framework40适用于.NET Framework 4.0,Framework35适用于.NET Framework 3.5。
但是对于Core 3.1,FrameworkCore10无法使用!
因此,我完全删除了节点TargetFrameworkVersion。
我和Bill遇到了完全相同的问题,都是在VS2019中处理遗留代码,其他方法都没有奏效。我只需更改运行设置以使用“自动检测”即可解决。
在菜单中选择“测试” -> “配置运行设置” -> “自动检测运行设置文件”。
我在一个旧项目中使用VS 2019时遇到了同样的问题。
重启Visual Studio没有帮助,Release构建后重新以Debug方式构建也没有帮助,删除.vs文件夹也没有帮助。我尝试了这些方法,但每次在测试检测期间都会收到类似于OP的消息,仍然无法运行测试。我在此提及这些是为了完整性。
我从Solution Explorer中删除了LocalTestRun.testrunconfig文件和*.vsmdi文件,清理并重新构建解决方案,然后单元测试再次正常工作。
在将 .csproj 测试项目从 .NetFramework 4.6.1 升级到 .NetCore 3.1 后,在 Azure Devops 2019 管道中使用 Visual Studio Test Task 版本 2 遇到了相同的问题。
我们的解决方法是在指定测试文件时更加具体。默认的 **\*test*.dll
找到了其他几个带有 "test" 的程序集,这些程序集在升级之前不存在。使用显式的 **\.dll
解决了这个问题。
testsettings
强制使用mstest.exe
而不是vstest.console.exe
。请改用runsettings
。 - jessehouwing