C#/Azure 응용 프로그램에서 잘못된 어셈블리 참조 문제의 원인을 추적하는 데 매우 어려움을 겪고 있습니다. 내가 찾고있는 것은 내 문제에 대한 정확한 해결책을 누군가에게 알려주는 것이 아니라 시스템이 어떤 어셈블리를로드하려고하는지, 그리고 왜 이것을 하는지를 찾는 방법을 찾는 것이다.C#에서 잘못된 어셈블리 참조를 찾는 방법
우리가 Azure 도구를 업그레이드 할 때 문제가 발생했습니다. 정말 이상한 점은 Entity Framework를 통해 데이터베이스 함수를 호출하려고 할 때만 오류가 발생한다는 것입니다. EF는이 모든 암시 적 어셈블리 로딩과 일부 혼란스러워지고 버전 2.2.0.0 대신 Microsoft.ServiceBus 1.8.0.0을로드하려고 시도하는 방법 (또는 해당 어셈블리를 찾는 방법)을 수행합니다.
우리는 Entity Framework 4.0을 사용하고 있습니다. 그리고 참고로 스토어드 프로 시저를 호출하고 다른 종류의 쿼리를 수행 할 수 있습니다. 이 문제를 일으키는 db 함수 호출 일뿐입니다.
내 응용 프로그램을 통해 높거나 낮음을 검색했으며 1.8.0.0에 대한 참조를 찾을 수 없으며 1.8.0.0 dll을 아무데도 찾을 수 없습니다. 1.8.0.0에 대한 언급을 고수하고있는 제 3 자 라이브러리에 대한 최신 정보가있을 수는 있지만 가능성은 희박합니다.
여전히 내 목표는 누군가 X가 내 문제라고 말하지 않고, Entity Framework를 감시 할 수있는 방법과 그 어셈블리를로드하려고하는 이유를 알 수있는 단서를 제공합니다. 찾을 것으로 예상하고 실제로 무엇을 찾고 있습니다.
여기 내 전체 스택 추적입니다.
'Microsoft.ServiceBus, 버전 = 1.8.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'또는 해당 종속성 중 하나를로드 할 수 없습니다. 찾은 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다. (HRESULT에서 예외 : 0x80131040) 시스템에서 System.Reflection.RuntimeAssembly._nLoad (의 AssemblyName 파일 이름, 문자열 코드베이스, 증거 assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & stackMark, IntPtr입니다 pPrivHostBinder, 부울 throwOnFileNotFound, 부울 forIntrospection, 부울 suppressSecurityChecks) 에서 . System.Data.Metadata에서 System.Reflection.Assembly.Load (assemblyRef의 AssemblyName) 에서 Reflection.RuntimeAssembly.InternalLoadAssemblyName (assemblyRef의 AssemblyName, 증거 assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark 및 stackMark, pPrivHostBinder을 IntPtr 부울 throwOnFileNotFound 부울 forIntrospection 부울 suppressSecurityChecks) .Edm.MetadataAssemblyHelper.SafeLoadReferencedAssembly (AssemblyName assemblyName) at System.Da ta.Metadata.Edm.MetadataAssemblyHelper.d__0.MoveNext() at System.Data.Metadata.Edm.AssemblyCache.LoadAssembly (어셈블리 어셈블리, 부울 loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData) at System.Data.Metadata.EdemblyCache.LoadAssembly Assembly 어셈블리, 부울 loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData) System.Data.Metadata.Edm.AssemblyCache.LoadAssembly (어셈블리 어셈블리, 부울 loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData)의 System.Data.Metadata.Edm.AssemblyCache.LoadAssembly의 loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData) System.Data.Metadata.Edm.AssemblyCache.LoadAssembly에서 (어셈블리 어셈블리, 부울 loadReferencedAssemblies, KnownAssembliesSet knownAssemblies, EdmItemCollection edmItemCollection, Acti on`1 logLoadMessage 개체 및 loaderCookie, Dictionary`2 & typesInLoading, List`1 및 오류) System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection, 조립 조립, 부울 loadReferencedAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage에서 ) System.Data.Metadata.Edm.ObjectItemCollection에서.System.Data.Objects.ObjectContext.CreateQuery [T] (String queryString, ObjectParameter [] parameters)에서 에있는 System.Data.Metadata.Edm.MetadataWorkspace.ImplicitLoadAssemblyForType (형식 유형, 어셈블리 호출 어셈블리)의 ImplicitLoadAllReferencedAssemblies (어셈블리 어셈블리, EdmItemCollection edmItemCollection) ) at Pallas.FlightBridge.Services.Internal.Data.Model.FlightBridgeDatabaseContext.TripPermissions (Nullable`1 companyPersonId) c : \ Users \ RMacgrogan \ dev \ flightbridge \ BaseOps \ trunk \ FB 버전 7.8 \ code \ InternalServices \ Data \ Model \ FlightBridgeDataModel.Designer.cs : 줄 3778 at Pallas.FlightBridge.Services.Internal.Data.Repository.TripRepository.GetTripAndOrdersAndTravelers (Int32 tripId, Int32 companyPersonId) (c : \ Users \ RMacgrogan \ dev \ flightbridge \ BaseOps \ trunk \ FB 버전 7.8 \ code \ InternalServices \ Data \ Repository \ TripRepository.cs : 줄 50
바인딩 리디렉션이 필요한 것 같습니다. – danludwig
파일 또는 어셈블리 'Microsoft.ServiceBus, Version = 1.8.0.0'을 (를)로드 할 수 없습니다. 이것에 대한 참조를 확인하십시오. – Tico
Tico 우리가 찾을 수있는 코드베이스의 어느 곳에서나 서비스 버스 1.8.0.0에 대한 참조가 전혀 없습니다. 나는 사방을 수색했다. 우리가 실제로 1.8을 참조하고 있지 않다는 것을 확인할 수있는 방법에 대한 제안이 있다면 나는 그것을 듣고 기뻐할 것입니다. –