MSTest + 多个框架目标 = 悲伤
MSTest + Multiple Framework Targets = sadness
我有一些 MSTest 项目需要同时针对 netcoreapp1.1
以及更新的内容,例如 netcoreapp3.0
我已经尝试了以下建议的大部分内容:
https://www.meziantou.net/mstest-v2-testing-against-multiple-frameworks.htm
How to properly unit test a .NET project with multiple target frameworks, given implementation differences among targets?
然而我的结果总是:
dotnet test
仅运行 netcoreapp3.0
目标。 None 的 netcorapp1.1
或 netcoreapp2.0
被拾起
- VS2019 运行零个测试目标,崩溃并报错:
StreamJsonRpc.RemoteInvocationException: The following TestContainer was not found 'C:\Projects\fact\collection\src\Fact.Extensions.Collection.Tests\bin\Debug\netcoreapp1.1\Fact.Extensions.Collection.Tests.dll'
at StreamJsonRpc.JsonRpc.<InvokeCoreAsync>d__96`1.MoveNext()
在写这个问题时,我推断最新的 Microsoft.NET.Test.Sdk
(撰写本文时为 16.4.0)可能与以前的框架不兼容。我通过以下两个测试了这个理论:
- 有条件地为
netcoreapp1.1
ItemGroup+PackageReference 指定 15.3.0
- 为
netcoreapp2.0
个目标之一回滚到 16.3.0
执行此操作后:
dotnet test
找到了几乎所有的东西,但仍然没有找到 16.3.0
+ netcoreapp2.0
目标。这似乎可以通过进一步退回到 16.2.0
来纠正,因为 Microsoft.TestPlafrom.TestHost
16.3.0
有一个 netcoreapp2.1
要求
- VS2019 仍然有投诉,但能够找到
15.3.0
和 16.3.0
Microsoft.NET.Test.Sdk
引用的项目
这与 Bruno Garcia
在开发者社区 link 中的发现一致。我不考虑回滚解决方案,而是考虑解决方法。通过使用条件按 TargetFramework 进行过滤,我对这种解决方法感觉更好。
来自 Visual Studio 的更多警告会很有帮助,确实是版本依赖性问题导致了问题。如果您仔细观察,dotnet test
确实在该方面提供了一些反馈。
我有一些 MSTest 项目需要同时针对 netcoreapp1.1
以及更新的内容,例如 netcoreapp3.0
我已经尝试了以下建议的大部分内容:
https://www.meziantou.net/mstest-v2-testing-against-multiple-frameworks.htm
How to properly unit test a .NET project with multiple target frameworks, given implementation differences among targets?
然而我的结果总是:
dotnet test
仅运行netcoreapp3.0
目标。 None 的netcorapp1.1
或netcoreapp2.0
被拾起- VS2019 运行零个测试目标,崩溃并报错:
StreamJsonRpc.RemoteInvocationException: The following TestContainer was not found 'C:\Projects\fact\collection\src\Fact.Extensions.Collection.Tests\bin\Debug\netcoreapp1.1\Fact.Extensions.Collection.Tests.dll'
at StreamJsonRpc.JsonRpc.<InvokeCoreAsync>d__96`1.MoveNext()
在写这个问题时,我推断最新的 Microsoft.NET.Test.Sdk
(撰写本文时为 16.4.0)可能与以前的框架不兼容。我通过以下两个测试了这个理论:
- 有条件地为
netcoreapp1.1
ItemGroup+PackageReference 指定 - 为
netcoreapp2.0
个目标之一回滚到16.3.0
15.3.0
执行此操作后:
dotnet test
找到了几乎所有的东西,但仍然没有找到16.3.0
+netcoreapp2.0
目标。这似乎可以通过进一步退回到16.2.0
来纠正,因为Microsoft.TestPlafrom.TestHost
16.3.0
有一个netcoreapp2.1
要求- VS2019 仍然有投诉,但能够找到
15.3.0
和16.3.0
Microsoft.NET.Test.Sdk
引用的项目
这与 Bruno Garcia
在开发者社区 link 中的发现一致。我不考虑回滚解决方案,而是考虑解决方法。通过使用条件按 TargetFramework 进行过滤,我对这种解决方法感觉更好。
来自 Visual Studio 的更多警告会很有帮助,确实是版本依赖性问题导致了问题。如果您仔细观察,dotnet test
确实在该方面提供了一些反馈。