Решение для TypeLoadException - PullRequest
       17

Решение для TypeLoadException

9 голосов
/ 16 декабря 2011

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

На этой странице есть какая-то особенно полезная информация, но, похоже, она не касается конкретно того, что я видел и как я ее решил (может быть неправильно):

TypeLoadException говорит «нет реализации», но оно реализовано

РЕШЕНИЕ для меня было простым: удалите все файлы, которые кэширует Visual Studio 2010, и используйте их для создания файлов сборки.


История вопроса:

Вот еще несколько деталей. Я видел TypeLoadException, как:

Необработанное исключение: System.TypeLoadException: метод [имя метода] в введите [имя типа] из сборки [имя сборки], версия = x.x.x.x, Культура = нейтральная, PublicKeyToken = ноль не имеет реализации.

У меня была реализация ... Я думал, пока не посмотрел сборку с ILDASM. Я обнаружил, что старые версии библиотек DLL записываются в мою выходную папку с устаревшими интерфейсами. Моя папка вывода не была настройкой по умолчанию, а относительным путем за пределами папки проекта (может быть, VS не может обработать это полностью ??). После выполнения очистки / перестройки проекта папка «obj» проекта была единственной папкой во всех дочерних папках папки моего проекта, в которой была правильная метка даты в DLL. Папка «bin» по какой-то причине все еще имела старую версию. И я полагаю, именно это было скопировано в выходную папку.

До этого я пробовал:

  • чистый / восстановление
  • перезапуск Visual Studio (2010)
  • перезагрузка
  • удаление моих библиотек сборки в выходной папке (bin \ x86 \ debug)

... безуспешно.

Я не уверен, почему VS не копировал правильную сборку в "obj" в выходную папку ... Проект, который ссылался на устаревшую сборку , был правильным .

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

Используете ли вы какой-либо контроль исходного кода и выполняете проверку и прочее? Если да, убедитесь, что папки obj и bin не включены в систему контроля версий. Если они затем удаляются из системы контроля версий, проверьте все и заново соберите свое решение.

0 голосов
/ 16 сентября 2016

У меня была такая проблема в Visual Studio 2015, и я решил ее с помощью диспетчера пакетов NuGet для решения, чтобы переустановить пакет, который каким-то образом был установлен в разных версиях.

...