c# 없습니다 - System.MissingMethodException : 메서드를 찾을 수 없습니까?



12 Answers

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

c# asp.net dll nuget httphandler

한 번 내 asp.net webforms 애플 리케이션에서 일하는이 오류가 throw됩니다.

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()
    {
    //
    }
}



잘못된 Nuget 패키지 버전

나는 우리 회사의 EF Nuget 데이터 액세스 패키지를 가져 오는 단위 테스트 프로젝트를 가지고 있었고 그 버전은 현재 버전 뒤에있었습니다.

aformentioned 패키지에 대한 Nuget 설정은 두 번째 레벨 종속 패키지 인 다른 패키지에 대한 least version 으로 설정되었습니다.

따라서 관련 어셈블리에 대해 잘못된 버전자동으로 나타납니다 .

해결책

Nuget에서 패키지를 설정 / 업데이트 하여 최신 문제를 해결합니다.




나는이 파일을 별도의 dll이 아니라 동일한 어셈블리에서 참조 된 파일과 함께 사용했다. 프로젝트에서 파일을 제외하고 다시 포함하면 모든 것이 잘 동작합니다.




또한 .. 프로젝트 또는 솔루션을 "정리"하고 다시 빌드하십시오!




난 그냥이 문제가 있었고 그것이 내 UI 프로젝트에서 DLL의 이전 버전을 참조했기 때문에 그것이 밝혀졌다. 따라서 컴파일 할 때 그것은 행복했습니다. 그러나 실행할 때 이전 버전의 DLL을 사용하고있었습니다.

솔루션을 다시 작성 / 정리 / 재배포해야한다고 가정하기 전에 다른 모든 프로젝트의 참조를 확인하십시오.




껐다가 다시 켜 보았습니까? 제쳐두고 조크를 제쳐두고, 내 컴퓨터를 다시 시작한 것은 실제로 저에게 트릭이었고 다른 답변에서 언급되지 않았습니다.




필자는 작업 공간에서 내 변경 사항을 저장하고 TFS 전동 공구 'scorch'를 실행하여이 문제를 해결했습니다 ( https://visualstudiogallery.msdn.microsoft.com/f017b10c-02b4-4d6d-9845-58a06545627f ). 그런 다음 변경 사항을 취소하고 프로젝트를 다시 컴파일했습니다. 이렇게하면 작업 공간에서 주변에있을 수있는 '매달린 파티'를 정리하고 새로 시작할 것입니다. 물론 TFS를 사용해야합니다.




제 경우에는 복사 / 붙여 넣기 문제였습니다. 나는 어떻게 든 나의 맵핑 프로파일을위한 사적 생성자로 끝났다.

using AutoMapper;

namespace Your.Namespace
{
    public class MappingProfile : Profile
    {
        MappingProfile()
        {
            CreateMap<Animal, AnimalDto>();
        }
    }
}

(ctor 앞에 누락 된 "공개"를 기록하십시오)

완벽하게 컴파일 된,하지만 AutoMapper 프로필을 인스턴스화 할 때 (물론!) 생성자를 찾을 수 없습니다!




이것은 MVC4를 사용하여 나에게 일어난 일이며,이 스레드를 읽고 오류를 던진 객체의 이름을 바꾼 후에 결정했다.

나는 깨끗하고 재건했고 두 프로젝트를 건너 뛰고 있다고 언급했다. 내가 그 중 하나를 재건했을 때, 기능을 시작하고 끝내지 않은 오류가있었습니다.

그래서 VS는 제가 원한다면 저에게 묻지 않고 다시 작성한 모델을 참조하고있었습니다.




나는이 문제에 부딪쳤다. 그리고 나에게있어 하나의 프로젝트는 Example.Sensors 네임 스페이스에있는 List를 사용하고 다른 유형은 ISensorInfo 인터페이스를 구현했다. Type1SensorInfo 클래스이지만이 클래스는 Example.Sensors.Type1의 네임 스페이스보다 한층 더 깊습니다. Type1SensorInfo를 목록으로 역 직렬화하려고 시도하면 예외가 발생합니다. Example.Sensors.Type1을 사용하여 ISensorInfo 인터페이스에 추가했을 때 예외가 없습니다!

namespace Example
{
    public class ConfigFile
    {
        public ConfigFile()
        {
            Sensors = new List<ISensorInfo<Int32>>();
        }
        public List<ISensorInfo<Int32>> Sensors { get; set; }
     }
   }
}

**using Example.Sensors.Type1; // Added this to not throw the exception**
using System;

namespace Example.Sensors
{
    public interface ISensorInfo<T>
    {
        String SensorName { get; }
    }
}

using Example.Sensors;

namespace Example.Sensors.Type1
{
    public class Type1SensorInfo<T> : ISensorInfo<T>
    {
        public Type1SensorInfo() 
    }
}



나는 각각이 동일한 dll의 서로 다른 버전 (다른 위치에있는)을 참조하는 2 개의 다른 프로젝트를 참조하는 테스트 프로젝트를 가졌다. 이것은 컴파일러를 혼란스럽게 만들었다.




메서드에서 매개 변수를 지정하지 않아도이 문제가 발생했습니다.




Related