Какие проблемы могут вызвать исключение TypeLoadException? - PullRequest
0 голосов
/ 22 июня 2010

У меня большое и раздутое программное обеспечение, и я хочу добавить в него новый элемент графического интерфейса.Элемент GUI был написан с использованием XAML и WPF.Я создал элемент пользовательского интерфейса в отдельной сборке и ссылаюсь на него в большом программном обеспечении.Два проекта скомпилированы гладко под VS2010, но когда я запускаю свое приложение, я получаю TypeLoadException.

При рассмотрении исключения с помощью отладчика я получаю следующее сообщение: Could not load type GUI.Dashboard from assembly GUI, blah, blah.Нет InnerException и никаких дополнительных подробностей.

В документации .GNU говорится, что это сообщение появляется, когда в конструктор исключения не передано никакого сообщения.Я предполагаю, что сам производитель исключения не знает, как это произошло.

Я попытался использовать инструмент Fuslogvw.exe, и он фактически показал мне некоторые незначительные недостающие зависимости, которые не связаны.Однако он не может найти никакой информации об этом самом исключении.

Какая проблема может вызвать неточное исключение, подобное этому?Есть ли способ сообщить Fuslogvw.exe об этом, чтобы получить некоторые подробности?

Заранее спасибо,

Редактировать: Я эффективно скомпилировал свое приложение с отладочными символами,Исключение происходит, когда я пытаюсь создать экземпляр класса, содержащий ссылку на проблемный символ.то есть:

class SomeClass
{
    GUI.Dashboard dashboard;
}

И трассировка вызова выглядит так:

at SomeClass..ctor()
at MainClass.Main() din MainClass.cs:line 42

Ответы [ 4 ]

0 голосов
/ 20 июня 2016

Просто чтобы добавить еще один ответ на этот вопрос:

у нас был клиент C ++, вызывающий .NET COM dll.

Разработчик .NET dll переименовал пространство имен, включающее в себя классы C #, и хотя progid остался прежним как в атрибуте class, так и в коде вызова C ++, среде выполнения не удалось загрузить объект, что привело к этой ошибке. 1005 *

0 голосов
/ 23 июня 2010

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

TypeLoadException использует HRESULT COR_E_TYPELOAD, который имеет значение 0x80131522.

Список начальных значений свойств для экземпляра TypeLoadException см. В конструкторах TypeLoadException.

Источник: MSDN

0 голосов
/ 28 июня 2010

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

Переключение в формат .dll решило все проблемы с линковкой.Я думаю, что это ошибка в CLR.

0 голосов
/ 22 июня 2010

Возможные проблемы:

  1. Сборка, на которую вы ссылаетесь, - только x64, а ваш потребитель - x86 или AnyCPU на 32-битном CLR
  2. Ваша потребительская сборка была скомпилирована с другой версией ссылочной сборки

Вы можете попробовать использовать FusLogVW , чтобы включить ведение журнала привязки сборки и проверить файл журнала для получения дополнительной информации о том, что не удалось.

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