Использование DLL из проекта C #, получение исключения TryLoadException во время выполнения - PullRequest
0 голосов
/ 03 октября 2010

У меня есть проект класса / библиотеки, который я сделал в Visual Studio, электронная таблица в пространстве имен SS. Затем я создал приложение для формы Windows, затем добавил DLL и поместил ее в свое меню ресурсов, и он прекрасно собирается, однако во время выполнения я получаю TryLoadException, что, как представляется, в документации означает, что это не так. в сборке, но тогда почему он компилируется просто отлично? Кроме того, я сомневаюсь, что это проблема с моей DLL, так как мой друг создал аналогичную DLL (соответствующую тем же API, но построенную по-другому, и это работает для его приложения Windows Forms), и я все еще получаю TryLoadException.

Вот процедура, которой я следовал.

  1. Создание (и реализация) класса электронных таблиц.
  2. Создание нового решения и проекта для интерфейса электронной таблицы.
  3. В проекте щелкните правой кнопкой мыши и добавьте существующий элемент, найденный в первой папке bin / debug (или bin / release, я пробовал оба) первой библиотеки решений. Также добавил dll к ссылкам.
  4. Где-нибудь в коде, который выполняется, добавьте строку:

    Spreadsheet ss = new Spreadsheet (); // Они оба уже в одном и том же пространстве имен

  5. Сборка, обратите внимание, что ошибок нет.

  6. Запустить, выполнение останавливается прямо здесь с TryLoadException.

1 Ответ

1 голос
/ 03 октября 2010

Вы помещаете DLL в свое меню ресурсов?Это кажется действительно странным.

Некоторые вещи, которые нужно попробовать.Сначала, после сборки, зайдите в папку Debug (или Release, в зависимости от того, что вы собираетесь запустить) в проекте Windows Forms.Там вы должны увидеть свой exe, а также эту DLL, которая вам нужна.Если нет, то проблема с тем, как вы устанавливаете ссылку, например, отсутствие CopyLocal или чего-то еще.

Во-вторых, если ваша DLL и приложение Windows Forms являются проектами в одном решении, используйте ProjectСсылка вместо просмотра в DLL.Это сделает жизнь немного проще.

В-третьих, попробуйте дважды щелкнуть exe вместо нажатия клавиши F5 и посмотреть, не повлияет ли это на что-нибудь.(Текущий каталог отличается в этих двух случаях, что часто актуально при поиске библиотек DLL.)

В-четвертых, попробуйте удалить ссылку, убрав библиотеку DLL из ресурсов или из любого странного места, где она сейчас находится, и добавивссылка снова.Посмотри, что будет, если дела пойдут лучше.

...