Метод не найден во время выполнения - PullRequest
27 голосов
/ 28 сентября 2011

У меня есть проект ASP.Net c #, пытающийся получить доступ к методам в классе в другом проекте.Это работает для первой половины методов в классе, но не для другой половины методов в классе, который я недавно добавил.Они компилируются, но выдают метод not found исключение во время выполнения.

У кого-нибудь есть идеи, которые я мог бы попробовать?Я пробовал:

  1. воссоздание файла .sln
  2. Subbing в другом проекте библиотеки классов, который, как я знаю, работает.Похоже, что ошибка в моем основном проекте, который вызывает метод в другом проекте.

Ответы [ 19 ]

1 голос
/ 31 марта 2017

Мой случай был небольшим изменением других здесь;но это может кому-то помочь.Я просто добавил необязательный аргумент в библиотеку и получил это сообщение из графического интерфейса с помощью библиотеки.

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

У меня есть

  • GUI, ссылающийся на LibA и LibZ
  • LibA, ссылающийся на LibZ

Так что я просто удалил все "bin" и "obj "папки как LibA, так и GUI, убедитесь, что обновленные DLL LibZ есть в обеих, и все снова заработало.

1 голос
/ 21 октября 2015

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

0 голосов
/ 24 июня 2019

Если вы ссылались на другой проект как .exe, вам нужно перестроить его как .dll, для этого вам нужно установить в ссылочном проекте значение class library в настройках проекта, затем собрать его и ссылаться на dll в проект, в котором метод отсутствовал.

0 голосов
/ 13 июля 2018

Это может быть поздний ответ: Но одно из возможных решений - очистить папку Temporary ASP.NET files: Т.е., C: \ Windows \ Microsoft.NET \ Framework \ vX.X.XXXXX \ Временные файлы ASP.NET

Удаление папок, связанных с вашим сайтом, и перестройка решения.

0 голосов
/ 30 марта 2018

Мне не удалось это исправить ни с одним из предложенных ответов. Я не смог найти какие-либо старые версии кастомной сборки. Я буквально искал везде с инструментом Все. В режиме отладки он показал правильную версию сборки, но все равно не смог найти метод.

Включение Автоматическое связывание в файле .csproj исправило это для меня

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

Я планировал использовать пакет .NET Framework 4.5 в своем проекте. Указанный выше параметр не требуется, если все пакеты в проекте предназначены для .NET Framework 4.5.1 или более поздней версии.

0 голосов
/ 29 июня 2017

В моем случае я изменил тип возвращаемого значения метода с IQueryable на IEnumerable.

Я перекомпилировал и загрузил DLL, содержащую метод, но не DLL с кодом, который вызывает метод. Таким образом, вызывающая DLL все еще ожидала метод с предыдущим типом возврата и не смогла его найти.

0 голосов
/ 20 апреля 2017

У меня была эта проблема, когда я скопировал решение в другое место на другом компьютере.Папка Build просто нужно было изменить.Не спрашивайте меня, почему, но решение было встроено в папку сборки (мы назовем эту папку A), затем старая копия была скопирована из папки B в папку C. Во время выполнения он не смог найти мой последний код, потому что он былпросматривая более старую версию в папке C. В окне Свойства для решения на вкладке «Сборка» я изменил путь вывода на папку B. Затем он создал последнюю версию в папке B, которую скопировал в папку C, и все снова заработало.

Немного не знаю, почему у нас папка C в первую очередь.У меня есть кодированное решение для тестирования пользовательского интерфейса, и папка C находится в папке «C: \ Users \\ Documents \ MyCodedUISolution \ TestResults \ _ 2017-04-20 11_31_29 \ Out».Для чего он используется и для чего он создан, я не знаю, но если здесь скопировать старый код, потому что вы меняете путь вывода или вы перемещаете решение, не меняя пути вывода на то, что нужно, то у вас проблемы.

0 голосов
/ 17 апреля 2014

В моем случае я развернул на ПК .NET 3.0 (Windows XP), в то время как целью компиляции была .NET 3.5. Мне действительно интересно, почему нет более простого предупреждения ...

Проблема заключалась в использовании DataContract из System.Runtime.Serialisation.

0 голосов
/ 28 марта 2017

Я столкнулся с той же проблемой, даже если я очистил и восстановил решение, которое не помогло. Когда я опубликовал приложение, старая версия DLL была в папке bin. Поэтому я изменил версию сборки в файле assemblyinfo. наконец то работает. Новая версия доступна в папке bin.

...