Подтвердить что ты не робот

Как отлаживать ошибки System.TypeLoadException в .NET?

Я получаю следующую ошибку на одной из моих ссылок:

Could not load type 'System.Func`2' from assembly 'MyAssembly, ...

Буду честным, я не думаю, что помню, как в последний раз, когда я видел ошибку System.TypeLoadException, или если я это видел, решение было очевидно. Мой первый инстинкт состоял в том, чтобы увидеть, что MSDN должен был сказать об этом:

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

Возможно, я читаю это неправильно, но он говорит, что CLR просто не может найти тип? Это может иметь большее значение, если это не то, что было в mscorlib. Все это было построено на платформе .NET4 с VS2010, поэтому нет моно или других странных проблем с библиотекой. Думаю ли я это? Что происходит?

4b9b3361

Ответ 1

Проблема в том, что у вас есть несоответствие в ваших версиях. Убедитесь, что все сборки собраны для .NET 4.

Ответ 2

Я получил эту ошибку после рефакторинга. У меня было два проекта для DLL с тем же именем.

Проверьте "Название сборки" в разделе "Приложение" свойств проекта.

Ответ 3

Я не уверен в вашем конкретном сценарии, но Assembly Binding Log Viewer (fuslogvw) обычно очень полезен при проблемах с загрузкой типа отладки. Подробнее на http://msdn.microsoft.com/en-us/library/e74a18c4.aspx

Ответ 4

Вы также можете получить это, если вы измените сборку, которую вы пытаетесь загрузить, но все еще имеете старую версию в GAC. Он пытается загрузить версию GAC, а не то, что вы ссылаетесь в своем проекте VS.

Ответ 5

Я получил эту ошибку, когда я переместил класс из одного проекта в другой в процессе очистки. Рассмотрев все другие возможные причины, перезагрузили каждый из проектов в моем решении, и все сработало.

  • Щелкните правой кнопкой мыши имя проекта в обозревателе решений
  • Выберите "Выгрузить проект"
  • Щелкните правой кнопкой мыши имя проекта в обозревателе решений
  • Выберите "Обновить проект"

Ответ 6

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

То, что исправлено, было открыть NuGet Manager в старом проекте и обновить соответствующий пакет, чтобы он был той же версией, которую я использовал в своей новой библиотеке.