robertocg72
robertocg72

Reputation: 55

System.Net.Http - Could not load file or assembly, then Cannot load a reference assembly for execution

When I publish a csproj I get the message:

Could not load file or assembly System.Net.Http

If I add it to the project and republish, I get the message:

[BadImageFormatException: Cannot load a reference assembly for execution.] [BadImageFormatException: Could not load file or assembly 'System.Net.Http'

So it's like catch-22

This is the system.web of my web.config

  <system.web>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.7.2" />
    <httpRuntime targetFramework="4.6" />
  </system.web>

Upvotes: 4

Views: 6017

Answers (2)

WantToDo
WantToDo

Reputation: 441

I solved it by install .Net framework 4.7.2 from https://support.microsoft.com/en-us/help/4054531/microsoft-net-framework-4-7-2-web-installer-for-windows

Upvotes: 2

Victor Procure
Victor Procure

Reputation: 883

First things first:

Make sure all your projects are pointing at the same version of System.Net.Http, you can manually verify this by checking your bin folder after a compile. Just make sure the DLLs are the same version.

Then Make sure all your App.Config/Web.Config have a binding redirect

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>

Lastly make sure you are not accidently publishing a 32-bit DLL with an 64-bit executable. This will also cause the BadImageFormatException.

Check your project settings to make sure you are targetting the right environment, then check your dependencies to make sure they are not accidently pulling/publishing the wrong DLL.

Upvotes: 7

Related Questions