Visual studio C# unit test System.Net.Http.Formatting assembly not loaded

1

I'm trying to write tests for my Web API project. But keep running into a runtime exception when executing anything on my Web API controllers. enter image description here

My test project builds fine. But when running, Visual studio complains about System.Net.HTTP.Formatting.dll that can't be loaded. I checked the version between my main project and my test project and all DLL versions are equal.

full error:

Message: Test method Tests.TagsTests.HappyFlowTests threw exception: System.IO.FileLoadException: Kan bestand of assembly System.Net.Http.Formatting, Version=5.2.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 of een van de afhankelijkheden hiervan niet laden. De manifestdefinitie van de gevonden assembly komt niet overeen met de assembly-verwijzing. (Uitzondering van HRESULT: 0x80131040) ---> System.IO.FileLoadException: Kan bestand of assembly System.Net.Http.Formatting, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 of een van de afhankelijkheden hiervan niet laden. De manifestdefinitie van de gevonden assembly komt niet overeen met de assembly-verwijzing. (Uitzondering van HRESULT: 0x80131040)

Losely translated

Message: Test method Tests.TagsTests.HappyFlowTests threw exception: System.IO.FileLoadException: Can't load file or assembly System.Net.Http.Formatting, Version=5.2.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of it's dependencies. The found manifest doesn't match the referenced assembly. (exception HRESULT: 0x80131040) ---> System.IO.FileLoadException: Can't load file or assembly System.Net.Http.Formatting, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of it's dependencies.The found manifest doesn't match the referenced assembly. (exception HRESULT: 0x80131040)

I've tried to clean and rebuild the solution in multiple different ways. But there seems to be something wrong somewhere that it keeps having issues with the DLL.

My tests packages.config
    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="EntityFramework" version="6.2.0" targetFramework="net461" />
      <package id="Microsoft.AspNet.WebApi" version="5.2.4" targetFramework="net461" />
      <package id="Microsoft.AspNet.WebApi.Client" version="5.2.4" targetFramework="net461" />
      <package id="Microsoft.AspNet.WebApi.Core" version="5.2.4" targetFramework="net461" />
      <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.4" targetFramework="net461" />
      <package id="MSTest.TestAdapter" version="1.3.2" targetFramework="net461" />
      <package id="MSTest.TestFramework" version="1.3.2" targetFramework="net461" />
      <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net461" />
    </packages>

My main project's packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net461" />
  <package id="bootstrap" version="3.3.7" targetFramework="net461" />
  <package id="EntityFramework" version="6.2.0" targetFramework="net461" />
  <package id="jQuery" version="3.3.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.Web" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.Razor" version="3.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.TelemetryCorrelation" version="1.0.0" targetFramework="net461" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.4" targetFramework="net461" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net461" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" />
  <package id="Modernizr" version="2.8.3" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="11.0.1" targetFramework="net461" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.4.1" targetFramework="net461" />
  <package id="WebGrease" version="1.6.0" targetFramework="net461" />
</packages>
c#
visual-studio-2017
asp.net-web-api2
asked on Stack Overflow Oct 20, 2018 by Reinard

1 Answer

1

I've suffered this bizzare error today. I found for some reason if I am using a HttpClient extension method. In my case httpClient.PostAsJsonAsync. As soon as I replaced my extension method with the more long winded.

httpClient.PostAsync("/path/", new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json").

The problem went away, despite the extension method seeming to live under the same namespace / assembly as 'StringContent'.

I may try to reproduce this later and maybe raise it as a potential SDK bug, but at least for myself I have a workaround.

answered on Stack Overflow Jul 25, 2019 by Lee

User contributions licensed under CC BY-SA 3.0