I am trying to upgrade my MVC 3 project to MVC 4 and while I install EF5
, the PostSharp
do not let compile the project. I get error below. Spend several hours trying to resolve the problem without any luck. The PostSharp refers to entityframework, version=4.3.1.0
but there is no such version in my project, I have left only 5.0 version
. Even searching all project files using external text editor do not give any search result for "4.3.1.0". So I have no idea where PostSharp picks it up. Any suggestions how to solve the problem?
Error 2 Unhandled exception (2.1.7.28, 32 bit, CLR 4.0, Release): PostSharp.Sdk.CodeModel.AssemblyLoadException: Cannot find assembly 'entityframework, version=4.3.1.0, culture=neutral, publickeytoken=b77a5c561934e089'. [Version mismatch]
============ PostSharp Assembly Loading Log ===================
LOG: Finding the assembly with binding identity 'entityframework, version=4.3.1.0, culture=neutral, publickeytoken=b77a5c561934e089'.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll' because this file was explicitly added to the search path.
LOG: File 'C:\Users\Administrator\Projects\PC\trunk\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll' has identity 'entityframework, version=5.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil'.
LOG: File 'C:\Users\Administrator\Projects\PC\trunk\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll' does not match the reference.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\packages\PostSharp.2.1.7.28\tools\Release\EntityFramework.exe' because this directory was explicitly added to the search path.
LOG: The file 'C:\Users\Administrator\Projects\PC\trunk\packages\PostSharp.2.1.7.28\tools\Release\EntityFramework.exe' could not be found.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\packages\PostSharp.2.1.7.28\tools\Release\EntityFramework.dll' because this directory was explicitly added to the search path.
LOG: The file 'C:\Users\Administrator\Projects\PC\trunk\packages\PostSharp.2.1.7.28\tools\Release\EntityFramework.dll' could not be found.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\PC\EntityFramework.exe' because this directory was explicitly added to the search path.
LOG: The file 'C:\Users\Administrator\Projects\PC\trunk\PC\EntityFramework.exe' could not be found.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\PC\EntityFramework.dll' because this directory was explicitly added to the search path.
LOG: The file 'C:\Users\Administrator\Projects\PC\trunk\PC\EntityFramework.dll' could not be found.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\PC\bin\EntityFramework.exe' because this directory was explicitly added to the search path.
LOG: The file 'C:\Users\Administrator\Projects\PC\trunk\PC\bin\EntityFramework.exe' could not be found.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\PC\bin\EntityFramework.dll' because this directory was explicitly added to the search path.
LOG: File 'C:\Users\Administrator\Projects\PC\trunk\PC\bin\EntityFramework.dll' has identity 'entityframework, version=5.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil'.
LOG: File 'C:\Users\Administrator\Projects\PC\trunk\PC\bin\EntityFramework.dll' does not match the reference.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\PC\obj\Debug\EntityFramework.exe' because this directory was explicitly added to the search path.
LOG: The file 'C:\Users\Administrator\Projects\PC\trunk\PC\obj\Debug\EntityFramework.exe' could not be found.
LOG: Probing location 'C:\Users\Administrator\Projects\PC\trunk\PC\obj\Debug\EntityFramework.dll' because this directory was explicitly added to the search path.
LOG: The file 'C:\Users\Administrator\Projects\PC\trunk\PC\obj\Debug\EntityFramework.dll' could not be found.
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\EntityFramework.exe' because this directory was explicitly added to the search path.
LOG: The file 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\EntityFramework.exe' could not be found.
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\EntityFramework.dll' because this directory was explicitly added to the search path.
LOG: The file 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\EntityFramework.dll' could not be found.
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\EntityFramework.exe' because this directory was explicitly added to the search path.
LOG: The file 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\EntityFramework.exe' could not be found.
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\EntityFramework.dll' because this directory was explicitly added to the search path.
LOG: The file 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\EntityFramework.dll' could not be found.
LOG: Looking in GAC for EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86.
LOG: Looking in GAC for EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=msil.
LOG: Looking in GAC for EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: The assembly 'EntityFramework_28' was not found.
===============================================================
at PostSharp.Sdk.CodeModel.Domain.GetAssembly(IAssemblyName assemblyName, BindingOptions bindingOptions)
at PostSharp.Sdk.CodeModel.AssemblyRefDeclaration.GetAssemblyEnvelope()
at PostSharp.Sdk.CodeModel.TypeRefDeclaration.GetTypeDefinition(BindingOptions bindingOptions)
at PostSharp.Sdk.CodeModel.TypeRefDeclaration.GetTypeDefinition()
at ^I3av2ouCqwmI.^4+F3cylo(INamedType _0, INamedType _1, BindingOptions _2)
at PostSharp.Sdk.CodeModel.TypeRefDeclaration.^A9yFoe2uB3TC(ITypeSignature _0, BindingOptions _1)
at ^I3av2ouCqwmI.^4+F3cylo(IMethodSignature _0, IMethodSignature _1, BindingOptions _2)
at PostSharp.Sdk.CodeModel.Binding.MethodSignatureComparer.Equals(IMethodSignature x, IMethodSignature y)
at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at ^/vWxD3eYDOIx.^wdkNIZCy[??0](^/fRRnkiTvxqu _0, ??0 _1, ^EyL1LQX01Ck8 _2, ^0RC0kpHqS6Uy _3, Dictionary`2 _4, Int32 _5, Int32 _6)
at PostSharp.Sdk.Binary.ModuleWriter.SetMemberSignatureIndex(MemberRefDeclaration _0, ^EyL1LQX01Ck8 _1, ^0RC0kpHqS6Uy _2)
at PostSharp.Sdk.Binary.ModuleWriter.WriteMemberRef(MemberRefDeclaration _0, MetadataToken _1)
at PostSharp.Sdk.Binary.ModuleWriter.GetMappedDeclarationToken(MetadataDeclaration _0)
at PostSharp.Sdk.Binary.ModuleWriter.SetMappedMetadataToken(MetadataDeclaration _0, UInt32* _1)
at ^R00FfLNj7vE0.^rk33N/hO(OpCodeNumber _0, MetadataDeclaration _1)
at ^R00FfLNj7vE0.EmitInstructionMethod(OpCodeNumber _0, IMethod _1)
at PostSharp.Sdk.CodeModel.Instruction.Write(BaseInstructionWriter writer, InstructionPrefixes allowedPrefixes)
at ^zpGNRK5nUM9z.^x98p/iJs13L+(InstructionReader _0)
at PostSharp.Sdk.CodeModel.MethodBodyDeclaration.^uPrQJ6gs(InstructionBlock _0, IMethodBodyVisitor[] _1, MethodBodyVisitLevel _2, InstructionAction _3, InstructionReader _4, InstructionBlockExceptionHandlingKind _5)
at PostSharp.Sdk.CodeModel.MethodBodyDeclaration.^uPrQJ6gs(InstructionBlock _0, IMethodBodyVisitor[] _1, MethodBodyVisitLevel _2, InstructionAction _3, InstructionReader _4, InstructionBlockExceptionHandlingKind _5)
at ^zpGNRK5nUM9z.^e2BtLyuT(^Kh85h0nXrulm& _0, Int32& _1)
at ^zpGNRK5nUM9z.^SkiT(^ceSOybcTEumb _0)
at PostSharp.Sdk.Binary.ModuleWriter.WriteMethodBodies(^ceSOybcTEumb _0, UInt32 _1)
at ^Up6wxUIUnN6a.^VfvrABjR()
at ^Up6wxUIUnN6a.^SkiT()
at ^cyC/TYSlPGB/.^wvPm(^RtksFin57NJ8 _0, ^8gP93Xsl\+Imn _1)
at PostSharp.Sdk.Extensibility.Tasks.CompileTask.Execute()
at PostSharp.Sdk.Extensibility.Project.ExecutePhase(String phase)
at PostSharp.Sdk.Extensibility.Project.Execute()
at PostSharp.Hosting.PostSharpObject.ExecuteProjects()
at PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation projectInvocation) C:\Users\Administrator\Projects\PC\trunk\PC\POSTSHARP PC
I think you may have some assembly binding policies in app.config
, which makes the CLR look for v5.0 instead of v4.3.1. PostSharp does not support binding policies in app.config
, but only system-wide ones (like the ones redirecting .NET 1.0 to 2.0).
Binding policies in app.config
are supported in PostSharp 3, but at the time of writing this feature has not been documented, and PostSharp 3 is still CTP.
The only solution for the moment is to make sure that all components and references of your projects have references (are linked) to v5.0, so no binding policy is necessary.