Azure Devops 无法在同一个 CI 任务中运行 .NET Framework 和 dotnet core 单元测试

Posted

技术标签:

【中文标题】Azure Devops 无法在同一个 CI 任务中运行 .NET Framework 和 dotnet core 单元测试【英文标题】:Azure Devops can't run .NET Framework and dotnet core unit test in the same CI task 【发布时间】:2021-05-02 16:03:43 【问题描述】:

我有一个 .NET 框架/.NET Core 项目的解决方案。

library.csproj(.net 标准) library.UnitTests.csproj(.net 框架) WebApi.csproj(.net 核心) WebApi.UnitTests.csproj(.net 核心)

我有一个通过 AzureDevops 构建的 CI,用于在 SonarQube 上导出覆盖范围。

所以,运行后,我得到了这个错误:

测试运行将使用为框架 .NETFramework、Version=v4.0 和平台 X64 构建的 DLL 以下 DLL 与框架/平台设置不匹配。 WebApi.UnitTests.dll 是为 Framework 2.2 和 Platform AnyCPU 构建的。

我尝试将管道分成两个步骤然后它可以工作,但我失去了第一个步骤的代码覆盖率。(不能做很多与 sonarQube 相关的事情)。

知道在同一个任务中一起运行测试吗?或者有其他方法吗?

【问题讨论】:

【参考方案1】:

出现这个问题的原因可能是你项目中的UnitTests.dll是为Framework 2.2和Platform AnyCPU构建的,但是在UnitTest任务中使用的是Framework 4.0和Platform x64。您可以添加/Framework 参数来解决这个问题。

/Framework:.NETCoreApp,Version=v2.0

【讨论】:

我试过了,通过这样做,只测试了 WebApi.UnitTests。我收到此消息:测试运行将使用为框架 .NETCoreApp、Version=v2.0 和平台 X64 构建的 DLL 下列 DLL 与框架/平台设置不匹配。 library.UnitTests.dll 是为 Framework 4.6.1 和 Platform AnyCPU 构建的

以上是关于Azure Devops 无法在同一个 CI 任务中运行 .NET Framework 和 dotnet core 单元测试的主要内容,如果未能解决你的问题,请参考以下文章

无法从部署中心为 Dotnet core 3.1 配置 CI 构建。有啥方法可以设置 CI Azure DevOps

将数组作为输入传递给 Azure DevOps YAML 任务

Azure DevOps 管道任务 NetCoreCLI 包。 AutoVersion 但保持 Major.Minor.Patch 不变

markdown 20190601-分享DevOps以及Azure DevOps的Pipeline功能做到CI以及CD

Azure DevOps 中项目的 Sonarqube 扫描问题

Azure Devops 中的交换服务结构