[C#] System.MissingMethodException : 메서드를 찾을 수 없습니까?

내 asp.net webforms 앱에서 한 번 작동했던 내용에 이제이 오류가 발생합니다.

System.MissingMethodException : 메서드를 찾을 수 없습니다

DoThis메소드는 동일한 클래스에 있으며 작동해야합니다.

다음과 같은 일반 처리기가 있습니다.

public class MyHandler: IHttpHandler
{
    public void Processrequest(HttpContext context)
    {
      // throws error now System.MissingMethodException: Method not found?
      this.DoThis(); 
    }

    public void DoThis()
    {
    //
    }
}



답변

이전 버전의 DLL이 여전히 어딘가에있을 때 발생할 수있는 문제입니다. 최신 어셈블리가 배포되어 있고 특정 폴더에 이전 어셈블리가 숨겨져 있지 않은지 확인하십시오. 가장 좋은 방법은 모든 빌드 된 항목을 삭제하고 전체 솔루션을 다시 빌드 / 재배치하는 것입니다.


답변

⚠️ 잘못된 Nuget 패키지 버전 ⚠️

나는 우리 회사 내부 EF Nuget 데이터 액세스 패키지와 당기는 된 단위 테스트 프로젝트를했다 그 코드 에 뽑아 그 버전이었다 외부 패키지 방식으로 현재 버전 뒤에 있습니다.

문제는 패키지의 Nuget 설정이 least version; 이전 버전이 이겼으며 작업 중에 사용되었습니다 ….

따라서 패키지와 앱 모두에서 사용하는 공통 어셈블리에 대해 잘못된 버전자동으로 얻었습니다 .


? 솔루션 ?

Nuget에서 패키지를 설정 / 업데이트 하여 최신 을 사용하고 [get] 함으로써 문제가 해결되었습니다.


답변

서버에 올바른 .NET Framework 버전을 설치하여이 문제를 해결했습니다. 웹 사이트는 버전 4.0에서 실행 중이며 호출하려는 어셈블리는 4.5로 컴파일되었습니다. .NET Framework 4.5를 설치하고 웹 사이트를 4.5로 업그레이드 한 후에는 모두 정상적으로 작동합니다.


답변

Visual Studio를 다시 시작하면 실제로 해결되었습니다. 오래된 어셈블리 파일이 여전히 사용 중이기 때문에 발생했다고 생각하고 “Clean Build”를 수행하거나 VS를 다시 시작하면 문제가 해결됩니다.


답변

별도의 dll이 아닌 동일한 어셈블리에서 참조 된 파일 로이 문제가 발생했습니다. 프로젝트에서 파일을 제외하고 다시 포함하면 모든 것이 잘 작동했습니다.


답변

방금 .NET MVC 프로젝트 에서이 문제가 발생했습니다. 근본적인 원인은 충돌하는 버전의 NuGet 패키지입니다. 여러 프로젝트가있는 솔루션이있었습니다. 각 프로젝트에는 NuGet 패키지가 있습니다. 한 프로젝트에는 Enterprise Library Semantic Logging 패키지 버전이 있었고 다른 두 프로젝트 (첫 번째 참조)에는 동일한 패키지의 이전 버전이있었습니다. 모두 오류없이 컴파일되지만 패키지를 사용하려고 할 때 신비한 “방법을 찾을 수 없음”오류가 발생했습니다.

수정은 두 프로젝트에서 이전 NuGet 패키지를 제거하여 실제로 필요한 한 프로젝트에만 포함되도록하는 것입니다. (또한 전체 솔루션을 깨끗하게 재구성했습니다.)


답변

참조를 확인하십시오!

솔루션 프로젝트에서 동일한 타사 라이브러리 (버전을 신뢰하고 경로를 보지 말고)를 지속적으로 가리키고 있는지 확인하십시오.

예를 들어, 한 프로젝트에서 iTextSharp v.1.00.101을 사용하고 다른 곳에서 iTextSharp v1.00.102를 NuGet하거나 참조하는 경우 이러한 유형의 런타임 오류가 발생하여 코드에 영향을 줄 수 있습니다.

나는 3 가지 프로젝트 모두에서 동일한 DLL을 가리 키도록 iTextSharp에 대한 참조를 변경했으며 모든 것이 작동했습니다.