Could not load file or assembly or one of its dependencies

224

I'm having another of these "Could not load file or assembly or one of its dependencies" problems.

Additional information: Could not load file or assembly 'Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

I have no idea what is causing this or how I could debug it to find the cause.

I've done a search in my solution catalogs .csproj files, and every where I have Unity I have:

Reference Include="Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"

Can't find any reference anywhere which goes against 1.2.0.0 in any of my projects.

Any ideas how I should go about solving this?

I would also appreciate tips on how to debug problems like this in general.

c#
.net
reference
compiler-errors
asked on Stack Overflow Dec 17, 2010 by ronag • edited Aug 29, 2012 by abatishchev

36 Answers

109
  1. Check if you are referencing an assembly which in turn referencing an old version of unity. For example let's say you have an assembly called ServiceLocator.dll which needs an old version of Unity assembly, now when you reference the ServiceLocator you should provide it with the old version of Unity, and that makes the problem.

  2. May be the output folder where all projects build their assemblies, has an old version of unity.

You can use FusLogVw to find out who is loading the old assemblies, just define a path for the log, and run your solution, then check (in FusLogvw) the first line where the Unity assembly is loaded, double click it and see the calling assembly, and here you go.

answered on Stack Overflow Dec 17, 2010 by Nour Sabouny • edited Jun 12, 2017 by Slime recipe
74

Open IIS Manager

Select Application Pools

then select the pool you are using

go to advanced settings (at right side)

Change the flag of Enable 32-bit application false to true.

answered on Stack Overflow Oct 7, 2013 by kranthi
57

For me, none of the other solutions worked (including the clean/rebuild strategy). I found another workaround solution which is to close and re-open Visual Studio.

I guess this forces Visual Studio to re-load the solution and all the projects, rechecking the dependencies in the process.

answered on Stack Overflow Feb 15, 2012 by Robotnik • edited Feb 27, 2015 by Robotnik
43

Try to clean Debug and Release folders in your solution. Then remove and add unity again.

answered on Stack Overflow Dec 17, 2010 by Aleksei Anufriev • edited Jan 28, 2015 by BlaM
18

At 99% the Could not load file or assembly or one of its dependencies problem is caused by dependencies! I suggest you follow this steps:

  1. Download Dependency Walker from http://www.dependencywalker.com/

  2. Launch Dependency Walker and open the dll (in my case NativeInterfaces.dll)

  3. You can see one or more dll with the error in red Error opening file...

  4. It means that this dll is missing in your system; in my case the dll name is MSVCR71.DLL

  5. You can download missings dll from google and copy in right path (in my case c:\windows\system32)

  6. At this point, you must register the new dll in the GAC (Global Assembly Cache): open a DOS terminal and write:

    cd \Windows\System32
    regsvr32 /i msvcr71.dll
    
  7. Restart your application!

answered on Stack Overflow May 27, 2016 by Stefano Lonati • edited Feb 5, 2018 by H. Pauwelyn
16

Following worked for me.

  • Remove Temporary Files C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
  • Close VSTS and Open Again
  • Remove and Add the same DLLs (Note: you add the same matching versions)
answered on Stack Overflow Mar 22, 2013 by Riddhi M.
15

Check the Web.config/App.config file in your project. See if the version numbers are correct.

<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />

This worked for me.

answered on Stack Overflow Apr 7, 2015 by Jaseem Abbas • edited Jan 12, 2018 by Jaseem Abbas
14

Microsoft Enterprise Library (referenced by .NetTiers) was our problem, which was in turn referencing an older version of Unity. In order to solve the problem we used the following binding redirection in the web.config:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Alternatively, you may want to just update the Enterprise Library to the latest version.

answered on Stack Overflow Jul 3, 2012 by Rebecca
14

Despite the original question was posted 5 years ago the problem still persists and is rather annoying.

The general solution is thorough analysis of all referenced assemblies to understand what's going wrong. To make this task easier I made a tool (a Visual Studio extension) which allows selecting a .Net assembly (.ddl or .exe file) and get a graph of all referenced assemblies with hightlighted conflicting or missed references.

The tool is available in Visual Studio Gallery: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734

Example of output: enter image description here

answered on Stack Overflow May 29, 2017 by marss19 • edited May 30, 2017 by marss19
11

screenshotIn solution explorer right click on project (not solution), in build tab choose Platform target : "Any CPU".

answered on Stack Overflow Sep 26, 2016 by Engin Aydogdu
10

I had similar problem. **Juntos answer is correct ** but you should note one important tip!

For unity 2.1.505.2 different AssemblyVersion and AssemblyFileVersion are specified:

enter image description here

AssemblyFileVersion is used by nuget but CLR does not care about it! CLR is going to use only AssemblyVersion!

So redirects should be applied to a version specified in AssemblyVersion: 2.1.505.0

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>

See also: What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion?

answered on Stack Overflow Nov 26, 2014 by Ievgen Naida • edited Aug 14, 2018 by Ievgen Naida
6

I also got this terrible error and found a solution for this...

  1. Right Click on the Solution name
  2. Click Clean Solution
  3. Restart Visual Studio
  4. Goto project Properties >> Build
  5. Change Configuration to Release
  6. Start Debugging (F5)

1) , 2)

Right Click on the Solution name

4) , 5)

Change Configuration to Release

Hope this will help you also.

answered on Stack Overflow Sep 17, 2015 by Roshana Pitigala
5
  • Goto :Solution -> Package
  • Click on Advanced Tab (Find below the page)
  • Add your dll to additional assemblies(this way we can add external dlls in sharepoint).
answered on Stack Overflow Sep 12, 2013 by Vijay Singh • edited Sep 12, 2013 by Community
4

Not sure if this might help.

Check that the Assembly name and the Default namespace in the Properies in your asemblies match. This resolved my issue which yielded the same error.

answered on Stack Overflow Apr 17, 2012 by Sjaan • edited Nov 3, 2013 by zero323
4

Thanks Riddhi M. Following worked for me.

Remove Temporary Files C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files Close VSTS and Open Again Remove and Add the same DLLs (Note: you add the same matching versions)

answered on Stack Overflow Jul 30, 2015 by Sridhar Kommana
4

In my case in the bin folder was a non reference dll called Unity.MVC3 , i tried to search any reference to this in visual studio without success, so my solution was so easy as delete that dll from the bin folder.

answered on Stack Overflow Jan 5, 2016 by Totodile
3

You say you have a lot of projects in your solution ... well, start with one near the top of the build order. Get that one to build and once you figure it out you can apply the same fix to the rest of them.

Honestly, you probably just need to refresh your reference. It sounds like you either updated your version and didn't update the references, or it's a relative path issue if you keep your solution in source control. Just verify your assumptions, and re-add the reference.

answered on Stack Overflow Dec 17, 2010 by Joel Martinez
3

Following worked for me.

  • Remove Temporary Files C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
    • then right click on Temporary Asp.net Files>properties>security and give total control access to IIS and to all user runing my project
answered on Stack Overflow Mar 6, 2015 by onlyme
3

This issue happened to me where one of my dependent libraries was compiling a DLL with "Any CPU" when the parent library was expecting a compilation of "x64".

answered on Stack Overflow Nov 16, 2016 by Creamstout10
2

You have to delete Your appname.dll file from your output folder. Cleanup Debug and Release folders. Rebuild and copy to output folder regenerated dll file.

answered on Stack Overflow May 15, 2013 by gucci
2

I "Set as Startup Project" the unloaded/unfound library/project.

Then deployed it.

It worked!

I think it couldn't found the .dll because it was not in the assembly at first.

answered on Stack Overflow Jul 16, 2013 by nirav
2

Another possible cause: make sure you haven't accidentally given both of the projects the same assembly name in project properties.

answered on Stack Overflow Dec 21, 2014 by nathanchere
2

My solution for .NET 4.0, using Enterprise Library 5, was to add a reference to:

Microsoft.Practices.Unity.Interception.dll

answered on Stack Overflow Jun 5, 2015 by MacGyver
2

Look out for conflicting references. Even after a clean and rebuild, conflicting references will still cause a problem. My problem was between AForge and Accord. I removed both of the references, and re-added the references re-choosing the particular reference (particular to my case, just Accord).

answered on Stack Overflow Mar 25, 2016 by user3791372
2

For me rebuilding the unity game without Unity C# Proects Checkmark worked.

answered on Stack Overflow May 9, 2016 by Praful Rudra
2

In my case, none of the proposed answer worked.

Here is what worked for me:

  1. Remove the reference
  2. Rename the DLL
  3. Import the reference again

The second step was important apparently as it did not work without it.

answered on Stack Overflow Jun 23, 2016 by Nicolas Raoul
2

Try checking if the "Copy to Local" property for the reference is set to true and the specific version is set to true. This is relevant for applications in Visual Studio.

2

I had this today, and in my case the issue was very odd:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
  </dependentAssembly>0.

Note the stray characters at the end of the XML - somehow those had been moved from the version number to the end of this block of XML!

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
  </dependentAssembly>

Changed to the above and voila! Everything worked again.

answered on Stack Overflow May 12, 2017 by garryp
2

I had the same problem i solved it via the instructions below:

  1. open tools menu and select option
  2. in options, window go to Projects and Solutions/Web Projects
  3. check use the 64bit version of IIS ...

enter image description here

answered on Stack Overflow Jun 12, 2019 by mohammad almasi
1

if you are getting this error message by opening an application on you windows xp it mean first you have installed that app due to its not working without net framework 4 and service pack 3 . you installed both and again you are getting this error so you should reinstall that app again but first uninstall from add and remove

if this not work please dont abuse me . i am also a junior

answered on Stack Overflow Nov 16, 2013 by basit durrani
1

Okay this may sound very stupid, but heres how I solved the issue after trying out every other solution and spending a night on this stupid thing.

I was getting the same error with some DLL missing from Bin Folder. I tried to delete , get back up everything from Team Foundation Server but didn't work. Got a copy of Bin folder from my office-matelocal machine, and replaced it. It didn't work either. At last, I manually FTPed server, got the copy of DLL which was showing up as missing, and then it started showing up that next file in the file list sequence is missing.

So I ftped server Got all Bin Folder, Manually replaced each file one by one. (Not Ctrl + All and replace.. I tried : it didn't work.) And somehow it worked...

answered on Stack Overflow Feb 19, 2014 by rak
1

My solution was:

I have a three-tier application and I forgot to copy the DLL also to the right path at IIS. Just after copied it to the right place it worked for me.

answered on Stack Overflow Sep 23, 2016 by Beetee
1

I kept getting this error on my web forms project in visual studio 2015. I shutdown Visual Studio and I killed the ScriptedSandbox64.exe, Microsoft.VsHub.Server.HttpHostx64.exe, Microsoft.VsHub.Server.HttpHostx.exe *32, Microsoft.VisualStudio.Web.Host.exe *32 processes and it seemed to help fix the issue.

answered on Stack Overflow Apr 20, 2017 by hackingchemist • edited Apr 20, 2017 by hackingchemist
0

I had this problem, the mistake was actually very silly. I had specified the wrong location for the .dll file, after changing the location to correct location the loading happened correctly (answering so someone else don't make this mistake).

answered on Stack Overflow Mar 26, 2014 by student • edited Mar 26, 2014 by Paresh Mayani
0

For me, it seems that Nuget wasn't playing nice with my project/solution. I used Nuget to install NewtonSoft.Json The project file seemed to reference it correctly, and when I R-clicked the dll name in Solution Explorer/Dependencies/Nuget, then clicked Properties, I found that the dll existed where properties said it should be.

I deleted the Nuget package and did R-click Project > Add > Reference and browsed to the dll in a packages directory when a former Nuget process had installed it, and then the Solution ran fine.

NOTES: this solution is quite a a hodge podge, starting with a Xamarin.iOS solution and adding a .netstandard project (which is where I had difficulty using Nuget). There is also a "portable" project in the solution. I inherited all this from a dev who has been gone for 3 years. Ha ha.

answered on Stack Overflow Mar 15, 2019 by pdschuller
0

I have a C# Winforms project called SetTags with a large number of forms that I use Visual Studio 2013 to work on. After editing one of them and trying to build I got the error:

Could not load file or assembly 'SetTags Version = 2.1.85.0, Culture=neutral,PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

The error also appeared when I tried to save the project or to close the form I had been working on.

I fixed the problem by removing a recently added radio button control and commenting out all references to it, then added the control again and uncommenting the code. This allowed me to save the form, and on closing restarting VS the problem had disappeared.

My Visual Studio environment has many occasional problems - Toolbox not showing or appearing only on VS startup, unrecognized custom controls when trying to view a form in Design mode - and it may be that I need to move on to a later VS version.

answered on Stack Overflow Oct 14, 2019 by SimonKravis

User contributions licensed under CC BY-SA 3.0