.net core 原因是什么;找不到数据收集器';XPlat代码覆盖率'&引用;Docker映像中的错误?

.net core 原因是什么;找不到数据收集器';XPlat代码覆盖率'&引用;Docker映像中的错误?,.net-core,dockerfile,coverlet,.net Core,Dockerfile,Coverlet,我正在DevOps服务器中设置一个构建,它只运行docker构建,运行容器,并从中收集测试结果。Dockerfile使用mcr.microsoft.com/dotnet/core/sdk:2.2映像作为其基础,我在其上安装了powershell 运行基本映像并执行dotnet--version确认其上有.NET Core 2.2.301。我的测试项目引用了coverlet.collector 1.0.1和Microsoft.NET.Test.Sdk 16.1.0。从我看到的Coverlet文档来

我正在DevOps服务器中设置一个构建,它只运行docker构建,运行容器,并从中收集测试结果。Dockerfile使用mcr.microsoft.com/dotnet/core/sdk:2.2映像作为其基础,我在其上安装了powershell

运行基本映像并执行
dotnet--version
确认其上有.NET Core 2.2.301。我的测试项目引用了coverlet.collector 1.0.1和Microsoft.NET.Test.Sdk 16.1.0。从我看到的Coverlet文档来看,这应该足以生成测试覆盖率结果

当我不使用Coverlet时,我的测试运行良好并生成预期的trx文件

以下是我的dockerfile的简化版本:

FROM myrepo/coresdk22-powershell AS build
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
USER ContainerAdministrator
# Not shown: some configuration steps using powershell
WORKDIR /app
COPY webapiapp/*.csproj ./webapiapp/
WORKDIR /app/webapiapp
RUN dotnet restore --configfile ../nuget.config
WORKDIR /app/
COPY webapiapp/. ./webapiapp/
WORKDIR /app/webapiapp
RUN dotnet publish -c Release -o out

FROM build AS testrunner
WORKDIR /app/webapiapp.test
COPY webapiapp.test/. .
RUN dotnet build -c Release -o out
WORKDIR /app/webapiapp.test/out
ENV Coverage="XPlat Code Coverage"
ENTRYPOINT dotnet vstest webapiapp.test.dll --logger:trx --collect:$env:Coverage
下面是run命令:

docker run-v“c:\testresults:c:\app\webapiapp.test\out\testresults”--rm myrepo/webapiapp:$(BUILD.BUILDID)-test

下面是webapiapp.test.csproj:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="1.0.1">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.0" />
    <PackageReference Include="xunit" Version="2.4.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
  </ItemGroup>

</Project>


netcoreapp2.2
假的
全部的
运行时间;建设;本地人;内容文件;分析仪;可传递的

我得到的不是覆盖率文件,而是“找不到数据采集器‘XPlat代码覆盖率’”。我遗漏了什么?

我得到了相同的错误,我的修复方法是在下面添加nuget引用

<PackageReference Include="coverlet.collector" Version="1.0.1" />

我试图让代码覆盖率在我的azure devops管道中工作,这为我做到了

我遵循下面的教程,使用默认模板api(WeatehrForecast示例)


您使用dotnet vstest和dotnet test的原因是什么?dotnet test不起作用。已经有一段时间了,所以我不记得错误是什么。当我说它不起作用时,我的意思是它甚至不会运行测试,更不用说代码覆盖率了。修复方法是添加nuget包,这是答案的第一行,链接仅供参考。