Could not load assembly in NUnit - c#

Seems like this should be a common problem that I expected to find an answer to via a quick Google search, but alas I cannot seem to find the answer.
I am writing a Unit Test using NUnit in C# for a method that relies on a third party library, Newtonsoft.Json to be specific.
When I attempt to call that method from my unit test I receive the all to common
Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference" exception.
Both the unit test and the application are using the exact same newtonsoft library and the dll is set to copy local in both projects.
Seems like I am missing something super obvious but I can't seem to overcome this issue.

"The located assembly's manifest definition does not match the assembly reference" Indicates that it can find the DLL, but there is a version mismatch between the assembly and what's in your project's manifest. Can you verify in windows explorer that the DLL's version really is 4.5.0.0?
I'd also be curious to see if there's more than one version of this assembly in your GAC -- perhaps NUnit is defaulting to a different version.

Related

Could not load file or assembly 'Newtonsoft.Json' on specific machine

I have a solution which runs pretty nice on 2 machines, but when I try to deploy same solution on specific machine which runs Windows Server 2012(irrelevant because another two instances also run on Windows Server 2012) it keep me throwing:
Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
I've checked all my dependencies and they seem to be ok, may it be something with ASP.NET on machine?
*All my project use Newtonsoft.Json, Version=9.0.1
Newtonsoft.Json is not part of .Net framework. You need to provide it yourself.
The exception you see means either:
Newtonsoft.json.dll is not part of your deployment and 2 machines where your solution works have this dll somehow installed
You have 2 conflicting versions of this dll and the solution does not know which one to pick.
So first check that this dll is present in your bin folder. If not, put it there.

How to resolve "The located assembly's manifest definition does not match the assembly reference." error?

I downloaded source code for pdfiumviewer from git hub. I made changes to one of the projects in that solution.Then I added that project to my application and added reference of that project to one my application's project.I had to uncheck the Signing option for the PDfiumViewer project, as some of the dll in that project are unsigned.I am able to build the application successfully.But at run time when I create an object of one of the class of PDfiumviewer project.It gives me the following error:
Could not load file or assembly 'PdfiumViewer, Version=2.11.0.0,
Culture=neutral, PublicKeyToken=null' or one of its dependencies. The
located assembly's manifest definition does not match the assembly
reference. (Exception from HRESULT: 0x80131040)
The version number of the assembly is correct.So, why am I getting this error?
The problem was that I had added reference of old unmodifed PdfiumViewer dll to another project.Hence, there was conflict between the two dlls (old and customized) at runtime.I removed the old dll reference and it worked.
Ive also encountered this issue, my scenario was thou that I had to add a reference from another solution into my project removing the reference was not an option - what worked for me was reinstall SQLclient from nuget package managerer on both solution. Hopes it helo someone else
The issue here is that you have a library that references v2.11.0.0 of the Pdfium library. This library could be an assembly that you built earlier, or another assembly that came from Pdfium that references this version of the library. When you built your version of the library you probably didn't use this same version number, and it wouldn't have been strong named correctly. To fix this, you can add an assembly binding redirect in your applications configuration file to redirect the offending library to your custom built one.
I wrote a program to fix this issue automatically: https://github.com/BackTrak/DependencyFixup/releases/tag/1.0.0.0
I know this question is old, but hopefully this helps out others!

Load assembly from local directory and not GAC

I am trying to write a 'hello world' application with a dependency to an assembly of a CAD software (SpaceClaim). I add the assembly SpaceClaim.Api.V12.dll to my references and build without problems. When I try to run the application I get the following error:
Unhandled Exception: System.IO.FileLoadException: Could not load file
or assembly 'SpaceClaim.Api.V12, Version=12.1.11373.0,
Culture=neutral, PublicKeyToken=7210645d4d5e3a39' or one of its
dependencies. The located assembly's manifest definition does not
match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'SpaceClaim.Api.V12, Version=12.1.11373.0, Culture=neutral,
PublicKeyToken=7210645d4d5e3a39'
---> System.IO.FileLoadException: Could not load file or assembly 'SpaceClaim.Api.V12, Version=12.1.8703.0, Culture=neutral,
PublicKeyToken=7210645d4d5e3a39' or one of its dependencies. The
located assembly's manifest definition does not match the assembly
reference. (Exception from HRESULT: 0x80131040) File name:
'SpaceClaim.Api.V12, Version=12.1.8703.0, Culture=neutral,
PublicKeyToken=7210645d4d5e3a39'
(this error message is also discussed here)
After checking the GAC, I can see that there is an assembly with same strong name with the one I am referencing (Version=12.1.8703.0). However when I open these two with a disassembler (ILSpy), I see that they target different runtimes, the one I am referencing targets .NET 2.0 and the one in the GAC .NET 4.0.
I would like to ignore the one in the GAC and pick from the local directory the one that targets NET 2.0. Apparently, simply copying it into the same folder with the executable is not enough. From what I 've read so far here and here, in order to do this, one needs to 'remove the signing' from the assembly. I don't have much experience with .NET so I am wondering, is this something that I can do with 3rd party assembly and if yes how? Or what other alternatives I have? The two assemblies have the same strong name so putting them both in the GAC is not an option as far as I understand.

log4net manifest definition mismatch

I'm getting this issue while running test client
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
I found many solutions like adding both versions, or enable logging in registry but nothing worked for me. I'm just stuck over here.
Anyone has any idea regarding this then please help me out. Any kind of help will be appreciated.
I expect you have a reference mismatch between two different assemblies with one expecting version 1.2.10.0 of log4net and another some other version. One version of the log4net assembly is copied to your output directory when your solution is built and then when your program is launched the .exe loader is then complaining because it isn't able to load the version of particular assembly (or .exe) is expecting. Upgrading / downgrading your assemblies to use the same version of log4net should solve the problem.

FileLoadException: The located assembly's manifest definition does not match the assembly

I downloaded a NuGet package for a project (Episerver). I'm trying to replace one specific dll with one of my one of my own implementation, with same name, same namespace, etc... by deleting the dll downloaded from Nuget and loading mine as a reference.
Everything compiles fine, but when trying to execute it, I get the following error:
Could not load file or assembly 'Mediachase.Commerce.Website, Version=7.10.1.169, Culture=neutral, PublicKeyToken=6e58b501b34abce3' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Does anyone have a clue on how I can solve this issue? Because I've been smashing my head quite some time against that problem, checked endless forums, and couldn't find any solution that works for me.
Thanks!
That won't work - you have to rebuild assemblies referencing the one you've replaced as well. You can try to use reflector to make c# code from those assemblies referencing your dll and rebuild those assemblies.

Categories

Resources