System.MissingMethodException: метод не найден? - PullRequest
209 голосов
/ 09 ноября 2011

То, что раньше работало в моем приложении 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()
    {
    //
    }
}

Ответы [ 29 ]

333 голосов
/ 09 ноября 2011

Это проблема, которая может возникнуть, если где-то еще существует старая версия DLL.Убедитесь, что самые последние сборки развернуты, и в некоторых папках нет дублированных старых сборок.Лучше всего будет удалить каждый построенный элемент и перестроить / заново развернуть все решение.

23 голосов
/ 07 июля 2013

Я решил эту проблему, установив на сервере правильную версию .NET Framework.Сайт работал под версией 4.0, и сборка, к которой он обращался, была скомпилирована для 4.5.После установки .NET Framework 4.5 и обновления сайта до 4.5 все работает нормально.

21 голосов
/ 12 февраля 2015

Перезапуск Visual Studio фактически исправил это для меня.Я думаю, что это было вызвано старыми файлами сборки, которые все еще используются, и выполнение «Чистой сборки» или перезапуск VS должно исправить это.

17 голосов
/ 01 апреля 2016

⚠️ Неправильная версия пакета Nuget ⚠️

У меня был проект модульного тестирования, который включал в наши компании внутренний пакет доступа к данным EF Nuget, и этот пакет использовал версию пакета, которая была на позади текущей версии.

Настройки Nuget для вышеупомянутого пакета были установлены на least version.

Следовательно, молча получил неверную версию для связанной сборки .


? Решение ?

Путем установки / обновления пакета в Nuget для использования и [get] последней , исправлена ​​проблема.

5 голосов
/ 02 мая 2014

Я только что столкнулся с этим в проекте .NET MVC. Основной причиной были конфликтующие версии пакетов NuGet. У меня было решение с несколькими проектами. Каждый из проектов имел несколько пакетов NuGet. В одном проекте у меня была версия пакета семантической регистрации Enterprise Library, а в двух других проектах (которые ссылаются на первый) у меня были более старые версии того же пакета. Все это компилируется без ошибок, но выдает загадочную ошибку «Метод не найден», когда я пытался использовать пакет.

Исправлено было удаление старых пакетов NuGet из двух проектов, чтобы они были включены только в один проект, который действительно нуждался в этом. (Также я сделал чистую перестройку всего решения.)

5 голосов
/ 18 августа 2012

Это произошло со мной в файле, указанном в той же сборке, а не в отдельной DLL. Как только я исключил файл из проекта, а затем включил его снова, все работало нормально.

4 голосов
/ 24 января 2017

Проверьте ваши рекомендации!

Убедитесь, что вы постоянно указываете на одни и те же сторонние библиотеки (не просто доверяйте версиям, смотрите путь) в своих проектах решений.

Например, если вы используете iTextSharp v.1.00.101 в одном проекте и используете NuGet или ссылаетесь на iTextSharp v1.00.102 где-то еще, вы получите эти типы ошибок времени выполнения, которые каким-то образом возникают в вашем коде.

Я изменил ссылку на iTextSharp во всех 3 проектах, чтобы она указала на одну и ту же DLL, и все заработало.

4 голосов
/ 26 августа 2013

Если вы разрабатываете на своем собственном сервере NuGet, убедитесь, что версии сборок совпадают:

[assembly: AssemblyVersion("0.2.6")]
[assembly: AssemblyFileVersion("0.2.6")]
[assembly: AssemblyInformationalVersion("0.2.6")]
3 голосов
/ 06 апреля 2016

У меня только что была эта проблема, и оказалось, что это потому, что я ссылался на предыдущую версию DLL из моего проекта пользовательского интерфейса. Поэтому при компиляции было приятно. Но при запуске он использовал предыдущую версию DLL.

Проверьте ссылки на все другие проекты, прежде чем предположить, что вам нужно пересобрать / очистить / повторно развернуть ваши решения.

3 голосов
/ 13 ноября 2013

также .. попробуйте "очистить" ваши проекты или решение и перестроить заново!

...