Cannot load a reference assembly for execution
Solution 1
What worked for me was deleting the bin and obj directories under my web app then rebuilding.
Solution 2
There's a known issue with .NET Framework 4.7.1 in this regard. Supposedly sorted in 4.7.2, but in the meantime what can you do?
The issue is related to the serialization assemblies, which you can optionally set to generate or not as part of your build (rclick project -> Properties -> Build tab -> see 'Generate serialization assemblies' at bottom.)
What worked for me - and I'm standing on the shoulders of others in part here - is to ensure this setting is set to 'Auto'. Do a full 'clean solution', and additionally if paranoid, this PowerShell snippet is handy if run in your solution root folder:
Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
Next, add the following targets to your csproj (just inside the enclosing <Project>
tag:
<Target Name="RemoveDesignTimeFacadesBeforeSGen" BeforeTargets="GenerateSerializationAssemblies">
<ItemGroup>
<ReferencePath Remove="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" />
</ItemGroup>
<Message Importance="normal" Text="Removing DesignTimeFacades from ReferencePath before running SGen." />
</Target>
<Target Name="ReAddDesignTimeFacadesBeforeSGen" AfterTargets="GenerateSerializationAssemblies">
<ItemGroup>
<ReferencePath Include="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" />
</ItemGroup>
<Message Importance="normal" Text="Adding back DesignTimeFacades from ReferencePath now that SGen has run." />
</Target>
If still no luck, explicitly set 'Generate serialization assemblies' to 'On' to force generation, and rebuild & run.
Solution 3
Today I have installed Acumatica 2018 R1 and I have come across this issue. Removing System.IO.Compression.ZipFile from bin folder fixed the problem.
Solution 4
I also faced this issue multiple time, This error may cause by reference or loading issue of dll's in your bin folder. just remove .bin folder and rebuild your application It will work.
Happy coding.
Solution 5
I have some research about the error
As we can see from the error, when we refer to SOAP based projects in Aspnetcore projects, we cannot use them directly. This is due to the implementation of the platform Aspnetcore.
It could be loaded using reflection. However, it allows us to use internal types dynamically. Support may be released in later versions of Aspnetcore for licenced soap assembly etc.
Deleting the bin folder, etc. is a solution when dll versions are different X86 or 64 etc. The real problem is the SOAP protocol, WebSocket, Proxy etc implementation. They cannot be used directly with Aspnetcore project. There's patch projects for that in github
Related videos on Youtube
![Krunal](https://i.stack.imgur.com/SRljk.png?s=256&g=1)
Krunal
Sound knowledge on .Net, MVC and Acumatica ERP Implementation, Customizations and Support Projects.
Updated on November 16, 2020Comments
-
Krunal over 3 years
All of a sudden my website is not loading and giving me below error. I am running VS2017 with .Net Framework 4.7.1 on Windows 10 Home.
[BadImageFormatException: Cannot load a reference assembly for execution.] [BadImageFormatException: Could not load file or assembly 'System.IO.Compression.ZipFile' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +225 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +110 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +22 System.Reflection.Assembly.Load(String assemblyString) +34 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +48 [ConfigurationErrorsException: Could not load file or assembly 'System.IO.Compression.ZipFile' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +729 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +247 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +157 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +226 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +73 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +321 System.Web.Compilation.BuildManager.ExecutePreAppStart() +170 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +734 [HttpException (0x80004005): Could not load file or assembly 'System.IO.Compression.ZipFile' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +525 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +118 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +708
Any suggestions?
-
Brendan over 6 yearsAssuming this is an Acumatica website, did you recently upgrade it? Do you get this error as soon as you try to access the site in your browser?
-
Krunal over 6 yearsI installed new instance of 2018 R1 and yes as soon as I try to access the site, I am getting above error.
-
RuslanDev over 6 yearsDid you try to restart Windows on your machine? Sometimes these issues might be caused by pending OS/.Net updates...
-
Krunal over 6 yearsRestarted Windows, reinstalled .Net Framework 4.7.1 and also repaired Acumatica, nothing worked. Still on the same error. Not sure what is happening.
-
Krunal over 6 yearsSeems no solution to this. Has to create a new website and bind all projects.
-
Kirill Bestemyanov over 6 yearsyou can just remove this assembly (System.IO.Compression.ZipFile.dll) from bin folder of site.
-
Krunal over 6 yearsYes, I remember I tried that but after that it keeps on throwing different error one after other. I guess it was something messed up in my website web.config file which I couldn't fix it.
-
Mir about 6 yearsI have a similar problem (under Visual Studio 2015) that started as soon as I retargeted to .NET 4.7.1. Nothing in my project actually uses that .dll, but it seems to be getting included by the compilation process for some reason.
-
-
Mike Gledhill about 6 yearsI am so depressed. I wasted an hour on this, did plenty of Clean's, but yes, you were right... deleting the obj and bin folders solved this issue for me. Many thanks. (Sigh...!)
-
Mike Brunner almost 6 yearsSame for me. I did cleans, reboots NuGet restores & updates and nothing worked. I even deleted my bin folder. Apparently deleting both the bin and the obj is the trick.
-
Huy Hoang over 5 yearsYep, this did the trick! You need to indeed delete the directories (just emptying it won't work)
-
T.S. over 5 yearsCheeze. I usually clean out all projects and reload fresh from TFS. But this time, got latest, rebuilt... and got this. Once I got rid of all
obj
folders - smooth sailing -
Darth Scitus almost 4 yearsThis worked for me. However I just moved on to another dll problem. Sigh back to it.
-
Yura over 3 yearsHad exactly same issue with "System.IO" loading - everything worked as usual after manual cleanup of "bin" folder.
-
Eleomosynator almost 3 yearsI got OP's issue in a .NET 4.7.2 project, FWIW. @VG8TS 's solution worked immediately and permanently (erase bin and obj).
-
Eleomosynator almost 3 yearsWorked immediately for me in a .NET 4.7.2 project.