Otto45
Otto45

Reputation: 595

Could not load file or assembly Microsoft.Practices.ServiceLocation, Version=1.3.0.0

Here is the error I'm getting when I run my application (.NET 4.5):

Server Error in '/' Application.

Could not load file or assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Assembly Load Trace: The following information can be helpful to determine why the assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be loaded.


=== Pre-bind state information ===
LOG: DisplayName = Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Austin/Documents/FileStore/FileStore.Web/
LOG: Initial PrivatePath = C:\Users\Austin\Documents\FileStore\FileStore.Web\bin
Calling assembly : Chicago.Security, Version=1.0.5826.21195, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Austin\Documents\FileStore\FileStore.Web\web.config
LOG: Using host configuration file: C:\Users\Austin\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 1.3.0.0 redirected to 1.3.0.0.
LOG: Post-policy reference: Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: The same bind was seen before, and was failed with hr = 0x80070002.

Stack Trace: 


[FileNotFoundException: Could not load file or assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.]
   Chicago.Security.AuthenticationModule.application_AuthenticateRequest(Object sender, EventArgs e) +0
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +141
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

I installed the nuget package CommonServiceLocator, but I'm still getting this error. The weird thing is that there is an assembly binding redirect in my web.config file, but the assembly does not appear in the reference list for my project and I cannot find it anywhere to add it. I'm still relatively new to ASP.NET, so I can't seem to pin down what the issue is exactly. Another thing I found to try is to set 'Enable 32 bit applications' to true for my application pool in the IIS Manager, but this did not fix my problem. I've been stuck on this for a while, so any help would be appreciated.

Upvotes: 12

Views: 26783

Answers (6)

Unnie
Unnie

Reputation: 937

They have updated the package, below change is required in code if you download the latest commonservicelocator package.

using Microsoft.Practices.ServiceLocation;

to

using CommonServiceLocator;

Upvotes: 0

JWP
JWP

Reputation: 6963

I had opened a VS2015 Solution in VS2017 and found missing references, not sure why.

  • Could not locate the assembly "CommonServiceLocator"
  • Could not locate the assembly "Unity.RegistrationByConvention"
  • Could not locate the assembly "Unity.ServiceLocation"
  • Could not locate the assembly "Unity.Configuration"
  • Could not locate the assembly "Unity.Interception.Configuration"
  • Could not locate the assembly "Unity.Container"

Build your project first to get a list of missing references (that show the release numbers). Then open the NUGET package manager for the solution and simply reinstall. Note: there are dependency chains to the install order, if an install fails, find the pre-req. dependency and install first, then try again. Takes about 10 minutes to correct.

Upvotes: 0

Ted Mosby
Ted Mosby

Reputation: 77

Make sure you have installed version 1.3.0 and not a different version.

Nuget link: https://www.nuget.org/packages/CommonServiceLocator/1.3.0

Upvotes: 7

footyapps27
footyapps27

Reputation: 4042

I was getting this error because I was using the new syntax of C# 7.0 in an older version. Once I reverted back to the older syntax, this was resolved.

Specifically, I was using:-

// Newer syntax.
if (int.TryParse(args.Value, out var value))
{
  args.IsValid = value > 0;
}

// Older supported version which resolved the issue.
int value;
if (int.TryParse(args.Value, out value))
{
  args.IsValid = value > 0;
}

Upvotes: 0

Kamlendra Sharma
Kamlendra Sharma

Reputation: 717

Open VS--> Tools --> Nuget Package manager--> Package manager Console

>PM Install-Package CommonServiceLocator

This should help!

Upvotes: 0

Otto45
Otto45

Reputation: 595

Well after hours of research and trying different things, uninstalling and reinstalling CommonServiceLocator from Nuget seemed to do the trick. I'm still amazed at how messy .NET apps are with their dependencies.

Upvotes: 17

Related Questions