LoaderException 속성을 검색하는 방법은 무엇입니까?


128

서비스 참조를 업데이트하는 동안 오류 메시지가 나타납니다.

사용자 정의 도구 경고 : 요청 된 유형 중 하나 이상을로드 할 수 없습니다. 자세한 정보는 LoaderExceptions 특성을 검색하십시오.

LoaderException 속성을 어떻게 검색합니까?

업데이트 : 도메인 개체 프로젝트를 다시 가져올 때 오류가 사라졌습니다. 왜 이것이 문제를 해결했는지는 모르겠지만 문제가 해결되어 기쁩니다.


6
이 문제를 어떻게 해결 했습니까? "도메인 개체 프로젝트 다시 가져 오기"는 무슨 뜻입니까? (프로젝트에 대한 참조를 제거하고 다시 추가 하시겠습니까?)
Nikos Tsokos 2016 년

답변:


142
try
{
  // load the assembly or type
}
catch (Exception ex)
{
  if (ex is System.Reflection.ReflectionTypeLoadException)
  {
    var typeLoadException = ex as ReflectionTypeLoadException;
    var loaderExceptions  = typeLoadException.LoaderExceptions;
  }
}

1
이 경고 / 오류가 발생하는 다른 사람들에게 가장 도움이 될 것으로 생각되므로 답변으로 표시했습니다.
rozon

3
이 솔루션을 사용하려고하는데 WCF 서비스에 실제로 try 블록을 감쌀 수있는 진입 점이 없습니다.
요르단

3
이 답변은 내 코드와 관련이 있으면 효과적입니다. 수업 시간 try...catch내내 Installer.cs아무 데나 배치했습니다 . 내 코드는 실행될 때, 설치 프로그램을 실행하려고 할 때만 이것을 던지지 않습니다. 누구나 자세한 내용을 보려면 LoaderExceptions 속성을 검색하는 방법을 알고 있습니까? 폴더를 찾아 로그 파일을 보시겠습니까?
jp2code

5
catch 절은 모든 예외를 catch하지만 ReflectionTypeLoadExceptions 만 처리합니다. 이와 같은 것이 더 좋을 것입니다. catch (ReflectionTypeLoadException ex) { var typeLoadException = ex as ReflectionTypeLoadException; var loaderExceptions = typeLoadException.LoaderExceptions; }
Scott Munro

1
@ ScottMunro : 한 유형으로 잡는 경우 동일한 유형의 다른 변수를 작성하고 캐스트하는 이유는 무엇입니까? 이것으로 충분합니다 : catch (ReflectionTypeLoadException ex) { var loaderExceptions = ex.LoaderExceptions; }. 또한 캐스트가 실패하고 null을 검사하지 않는 한 직접 캐스트를 수행하는 것이 좋으며 나중에 null 참조 예외로 실패하지 않습니다.var typeLoadException = (ReflectionTypeLoadException)ex;
Nelson Rothermel

74
catch (ReflectionTypeLoadException ex)
{        
    foreach (var item in ex.LoaderExceptions)
    {
          MessageBox.Show(item.Message);                    
    }
}

오래된 스레드를 부활시켜 죄송하지만 다른 사람이 로더 예외 (풀 반사 유형로드 예외 사용)를 풀기 위해 다른 솔루션을 게시하고 싶었습니다.


2
참고로, Win 서비스 (예 : i)를 실행중인 경우 UI 요소가 자동으로 차단되므로 MessageBox가 나타나지 않습니다. 나머지 구현이 도움이되었습니다. 대신 로그 파일에 저장했습니다. 감사.
Vippy

1
"캐치 명령문에 명령문 블록이 없습니다." 신, 나는 powershell를 싫어한다.
올빼미

고마워,이 솔루션은 정확한 문제를 정확하게 지적하므로 정확합니다. 예외를 잡을 필요가 없으며 아무것도하지 않습니다.
무하마드 Ashhar 하산

5

Visual Studio에서 Quick Watch를 사용하면 다음과 같이 throw 된 예외의 ViewDetails에서 LoaderException에 액세스 할 수 있습니다.

($exception).LoaderExceptions

감사! LoaderExceptions실제로 관련 정보가 포함되어 있기 때문에 액세스 할 필요없이 해당 정보를 포함시키지 않는 이유가 궁금 합니다.
GuiRitter

0

프로빙 및 / 또는 대화식 모드를 사용하는 사람들을위한 또 다른 대안 :

$ Error [0] .Exception.LoaderExceptions

참고 : [0]은 스택에서 가장 최근의 오류를 가져옵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.