visual-studiounit-testingcsprojbuild-error

unittests fails on build server with Could not load type 'Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupBehavior


I got an assembly that builds and unit tests fine on my PC, but fails to test on the build PC. It has been failing for about a month. I've most likely done something wrong. Here is the response I get from the build server.

16:29:38     Project "xyz.Utilities.UnitTests.csproj": VSTest
16:29:40     Test run for C:\Bin\Release\net5.0-windows\xyz.Utilities.UnitTests.dll (.NETCoreApp,Version=v5.0)
16:29:40     Microsoft (R) Test Execution Command Line Tool Version 16.11.0
16:29:40     Copyright (c) Microsoft Corporation.  All rights reserved.
16:29:40     
16:29:40     Starting test execution, please wait...
16:29:40     A total of 1 test files matched the specified pattern.
16:29:41     An exception occurred while invoking executor 'executor://mstestadapter/v2': Could not load type 'Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupBehavior' from assembly 'Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

16:29:41     Stack trace:
16:29:41        at Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.MSTestExecutor.RunTests(IEnumerable`1 sources, IRunContext runContext, IFrameworkHandle frameworkHandle)
16:29:41        at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.RunTestsWithSources.InvokeExecutor(LazyExtension`2 executor, Tuple`2 executorUriExtensionTuple, RunContext runContext, IFrameworkHandle frameworkHandle)
16:29:41        at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution.BaseRunTests.RunTestInternalWithExecutors(IEnumerable`1 executorUriExtensionMap, Int64 totalTests)
16:29:41     
16:29:41     
16:29:41     Test Run Failed.
16:29:41     
16:29:41     Build FAILED.
16:29:41         0 Warning(s)
16:29:41         0 Error(s)

My project file is quite simple:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net5.0-windows</TargetFramework>
        <IsPackable>false</IsPackable>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
        <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
        <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
        <OutputPath>$(SolutionDir)\Bin\$(Configuration)</OutputPath>
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
        <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
        <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
        <OutputPath>$(SolutionDir)\Bin\$(Configuration)</OutputPath>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="EasyTcp" Version="4.0.0" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
        <PackageReference Include="MSTest.TestAdapter" Version="2.2.7" />
        <PackageReference Include="MSTest.TestFramework" Version="2.2.7" />
        <PackageReference Include="coverlet.collector" Version="3.1.0">
          <PrivateAssets>all</PrivateAssets>
          <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
    </ItemGroup>
    <ItemGroup>
      <ProjectReference Include="..\xyz.Utilities\xyz.Utilities.csproj" />
    </ItemGroup>
</Project>

I think it has something to do with the version of Visual Studio on the build server. We are running Teamcity. Does anyone have any clue?


Solution

  • Upgrade your NuGet packages to the latest and it should fix your problem. I think you need 2.2.8 for MSTest.TestAdapter and MSTest.TestFramework.