[c#] 오류 메시지 ‘요청한 유형 중 하나 이상을로드 할 수 없습니다. 자세한 정보는 LoaderExceptions 특성을 검색하십시오. ‘
Entity Framework , SQL Server 2000, Visual Studio 2008 및 Enterprise Library를 사용하여 응용 프로그램을 개발했습니다 .
로컬에서는 완벽하게 작동하지만 프로젝트를 테스트 환경에 배포하면 다음 오류가 발생합니다.
요청 된 유형 중 하나 이상을로드 할 수 없습니다. 자세한 정보는 LoaderExceptions 특성을 검색하십시오.
스택 추적 : System.Reflection.Module._GetTypesInternal (StackCrawlMark & stackMark)
System.Reflection.Assembly.GetTypes ()에서
System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly (LoadingContext 컨텍스트)에서
System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache (LoadingContext 컨텍스트)에서
System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache에서 (어셈블리 어셈블리, 부울 loadReferencedAssemblies, 사전
2 knownAssemblies, Dictionary
2 및 typesInLoading, List`1 & 오류)System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection, 어셈블리 어셈블리, 부울 loadReferencedAssemblies)에서
System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType (Type type)에서
System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType (유형 유형, 어셈블리 호출 어셈블리)
System.Data.Objects.ObjectContext.CreateQuery [T] (String queryString, ObjectParameter [] 매개 변수)에서
Entity Framework에 문제가있는 것 같습니다. 어떻게 고칠 수 있습니까?
답변
프로젝트 참조의 로컬 복사 속성을 true로 설정하여이 문제를 해결했습니다.
답변
이 오류에는 진정한 마법의 총알 답변이 없습니다. 열쇠는 문제를 이해하기 위해 모든 정보를 얻는 것입니다. 동적으로로드 된 어셈블리에 참조 된 어셈블리가 없을 수 있습니다. 해당 어셈블리는 응용 프로그램의 bin 디렉토리에 있어야합니다.
이 코드를 사용하여 누락 된 항목을 판별하십시오.
using System.IO;
using System.Reflection;
using System.Text;
try
{
//The code that causes the error goes here.
}
catch (ReflectionTypeLoadException ex)
{
StringBuilder sb = new StringBuilder();
foreach (Exception exSub in ex.LoaderExceptions)
{
sb.AppendLine(exSub.Message);
FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
if (exFileNotFound != null)
{
if(!string.IsNullOrEmpty(exFileNotFound.FusionLog))
{
sb.AppendLine("Fusion Log:");
sb.AppendLine(exFileNotFound.FusionLog);
}
}
sb.AppendLine();
}
string errorMessage = sb.ToString();
//Display or log the error based on your application.
}
답변
나를 위해 일한 해결책은 bin / 및 obj / 폴더를 삭제하고 솔루션을 다시 작성하는 것이 었습니다.
답변
두 가지 가능한 솔루션 :
- 릴리스 모드에서 컴파일하고 있지만 디버그 디렉토리에서 이전 컴파일 된 버전을 배포합니다 (또는 그 반대).
- 테스트 환경에 올바른 버전의 .NET Framework가 설치되어 있지 않습니다.
답변
이전에 언급했듯이 일반적으로 어셈블리가없는 경우입니다.
정확히 어떤 어셈블리가 누락되었는지 확인하려면 디버거를 연결하고 중단 점을 설정 한 다음 예외 개체가 표시되면 ‘LoaderExceptions’속성으로 드릴 다운하십시오. 누락 된 어셈블리가 있어야합니다.
그것이 도움이되기를 바랍니다!