2013-01-22 117 views
0

我想將我的MVC 3項目升級到MVC 4,而當我安裝EF5時,PostSharp不讓編譯項目。我在下面得到錯誤。花幾個小時試圖解決問題沒有任何運氣。該PostSharp是指entityframework, version=4.3.1.0但在我的項目沒有這樣的版本,我只留下5.0 version。即使使用外部文本編輯器不給「4.3.1.0」的任何搜索結果搜索所有項目文件。所以我不知道PostSharp在哪裏撿起它。任何建議如何解決這個問題?PostSharp和EntityFramework 5不能一起工作

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 

回答

0

我想你可能app.config,這使得CLR查找V5.0,而不是v4.3.1有一定的程序集綁定策略。 PostSharp不app.config支持綁定策略,但唯一的全系統的人(如的那些重定向.NET 1.0〜2.0)。

PostSharp 3中支持app.config中的綁定策略,但在撰寫本文時,此功能尚未記錄,並且PostSharp 3仍爲CTP。

在目前唯一的解決辦法是,以確保您的項目的所有組件和引用有引用(鏈接)至V5.0,所以沒有約束力的政策是必要的。