PostSharp를 사용하고 있는데 문제가 없습니다. 최근에 일부 프로젝트를 MVC 버전 5.2로 업그레이드했습니다. 오늘, MVC 버전 4.0을 사용하는 이전 프로젝트를로드했습니다. PostSharp 빌드에 이상한 오류를보고 시작 :PostSharp에서 문제가 발생하여 프로젝트가 참조하지 않을 때 system.web.mvc, version = 3.0.0.0에 대한 어셈블리를 찾을 수 없습니다.
Error 17 Unhandled exception (3.1.42.0, 32 bit, CLR 4.5, Release): PostSharp.Sdk.CodeModel.AssemblyLoadException: Cannot find assembly 'system.web.mvc, version=3.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35'. [Version mismatch]
============ PostSharp Assembly Loading Log ===================
LOG: Finding the assembly with binding identity 'system.web.mvc, version=3.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35'.
LOG: Found file 'C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll' with identity 'system.web.mvc, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35, processorarchitecture=msil'.
LOG: Reference mismatch for 'C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll' [VersionMismatch].
LOG: Probing location 'C:\ProgramData\PostSharp\3.1.42\bin.Release\System.Web.Mvc.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\ProgramData\PostSharp\3.1.42\bin.Release\System.Web.Mvc.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\ProgramData\PostSharp\3.1.42\bin.Release\System.Web.Mvc.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Work\Work\CodeBase\C#\CS\+Frameworks\v5\BusinessLogic_CS_v5\bin\Debug\System.Web.Mvc.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Work\Work\CodeBase\C#\CS\+Frameworks\v5\BusinessLogic_CS_v5\bin\Debug\System.Web.Mvc.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Work\Work\CodeBase\C#\CS\+Frameworks\v5\BusinessLogic_CS_v5\bin\Debug\System.Web.Mvc.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Work\Work\CodeBase\C#\CS\+Frameworks\v5\BusinessLogic_CS_v5\obj\Debug\System.Web.Mvc.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Work\Work\CodeBase\C#\CS\+Frameworks\v5\BusinessLogic_CS_v5\obj\Debug\System.Web.Mvc.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Work\Work\CodeBase\C#\CS\+Frameworks\v5\BusinessLogic_CS_v5\obj\Debug\System.Web.Mvc.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Web.Mvc.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Web.Mvc.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Web.Mvc.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Web.Mvc.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Web.Mvc.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Web.Mvc.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Looking in GAC for System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=x86.
LOG: Looking in GAC for System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=msil.
LOG: Looking in GAC for System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
LOG: The assembly 'system.web.mvc, version=3.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35' was not found.
===============================================================
at PostSharp.Sdk.CodeModel.Domain.GetAssembly(IAssemblyName assemblyName, BindingOptions bindingOptions)
at PostSharp.Sdk.CodeModel.AssemblyRefDeclaration.^5YpB0scd(BindingOptions _0)
at PostSharp.Sdk.CodeModel.AssemblyRefDeclaration.GetAssemblyEnvelope(BindingOptions bindingOptions)
at PostSharp.Sdk.CodeModel.TypeRefDeclaration.GetTypeDefinition(BindingOptions bindingOptions)
at PostSharp.Sdk.CodeModel.TypeRefDeclaration.GetTypeDefinition()
at PostSharp.Sdk.CodeModel.CompareExtensions.DefinitionMatchesReference(INamedType definition, INamedType reference, BindingOptions options)
at PostSharp.Sdk.CodeModel.TypeRefDeclaration.^A9yFoe2uB3TC(ITypeSignature _0, BindingOptions _1)
at PostSharp.Sdk.CodeModel.CompareExtensions.DefinitionMatchesReference(IMethodSignature definition, IMethodSignature reference, BindingOptions options)
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 ^zpGNRK5nUM9z.^e2BtLyuT(^Kh85h0nXrulm& _0, Int32& _1)
at ^zpGNRK5nUM9z.^SkiT(BufferWriter _0)
at PostSharp.Sdk.Binary.ModuleWriter.WriteMethodBodies(BufferWriter _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:\Work\Work\CodeBase\C#\CS\+Frameworks\v5\BusinessLogic_CS_v5\BusinessLogic_CS_v5.csproj BusinessLogic_CS_v5
내가 모든 프로젝트 참조를 통해 가고, system.web.mvc, version=3.0.0.0
를 참조에는 프로젝트가 없습니다. 모든 프로젝트는 4.0.0.0
입니다. 왜 3.0.0.0 버전을 언급하고 있습니까? 어쩌면 일부 GAC 또는 일부 현지 설치에서 찾을 수 있습니까?
프로젝트 속성에서 PostSharp를 비활성화하면 프로젝트가 성공적으로 컴파일됩니다. 그래서 PostSharp와 관련이 있어야합니다. 내가 잃어버린 어떤 도움이라도 대단히 감사하겠습니다.
기회가 3.0를 참조하고 사용하는 라이브러리 중 하나입니다 :
귀하의 XML 코드가 같은 것을 보일 것입니다. 자세한 정보를 확인할 수있는 곳은 퓨전 로그 뷰어입니다. http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx – Phaeze
필자의 경우, PostSharp NuGet을 직접 추가하여 문제! (v4.3.3) –