Не удалось загрузить файл или сборку 'MySql.Data, версия = 6.2.2.0

12

Я работаю над настольным приложением с С# и базой данных MySQL. Когда я устанавливаю его установщик на моем компьютере, он отлично работает, но когда я устанавливаю его на другую машину, он дает следующее исключение при попытке доступа к БД. Я использую MySQL.Data.dll для связи с MySQL.

Не удалось загрузить файл или сборку 'MySql.Data, Version = 6.2.2.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d' или одну из его зависимостей. Система не может найти указанный файл.

и MySQL.Data.dll в папке "Проект" в папке "Файлы программ"

Собственно, когда я запускаю его из своей папки в файле программы, он работает нормально, без ошибок, но когда я пытаюсь запустить его из ярлыка в меню "Пуск", он дает эту ошибку.

Теги:
database

6 ответов

7
Лучший ответ
  • Является ли ярлык в меню "Пуск" правильно настроенным рабочим каталогом? (Я подозреваю, что это наиболее вероятный ответ)

  • Существует ли в GAC (глобальный кэш сборок) другая/некорректная версия MySql.Data.dll? Я видел, что это давало похожие сообщения об ошибках раньше.

  • 0
    +1 За упоминание кеша. Понятия не имею, почему я пропустил ваш ответ раньше :(
  • 4
    @Azhar Azhar - что это было тогда, 1 или 2? :)
Показать ещё 1 комментарий
17

Звучит, мне уже 2 года поздно ответить на этот пост, но это может быть полезно для тех, кто все еще сталкивается с этой проблемой, поэтому вот мой вывод от 1 апреля 2012 года 5 вечера EST:

У меня была такая же проблема с одним из моих веб-приложений. И я обнаружил, что указанная проблема возникает, когда вы делаете:

  • Скопируйте и вставьте MySql.Data.dll в папку.
  • У вас есть копия любой версии MySql.Data.dll в GAC

Хотя приложение отлично работает на вашей машине разработки, так как оно может видеть файлы, но когда вы развертываете его на какой-либо другой машине, это фактически приводит к ошибке времени выполнения.

В моем случае VS2008 всегда указывал мне ту же ошибку, что и вы упомянули. Затем я сделал следующее:

  • Удалена локальная ссылка на копию dll
  • Ссылка на DLL, найденную в GAC
  • И установите для свойства "Копировать локальное" значение "True" в DLL, щелкнув правой кнопкой мыши- > свойства.

Edit:

Кто-то спросил: "Где GAC?":
http://msdn.microsoft.com/en-us/library/yf1d93sz (v = vs .110).aspx

  • 4
    Настройка «Копировать на локальный» решила мои проблемы с Godaddy хостингом. Спасибо и +1 :)
  • 1
    где я могу найти GAC?
Показать ещё 3 комментария
3

Имеется ли файл MySQL.data.dll в том же каталоге, что и файл .exe?

Если у этого MySQL.data.dll есть соответствующий ключ версии /public, который ищет файл .exe?

2

Когда это происходит со мной, это обычно одна из двух вещей:

Убедитесь, что на компьютере, где вы получили сообщение об ошибке, отображается файл MySql.Data. (Невероятно, как часто файлы пропадают:-))

Если MySql.Data представляет собой 32-битную DLL смешанного режима (собственный и управляемый код). И исполняемый файл указывает "Любой процессор". На 64-битной машине с 64-разрядным .NET это не удастся с сообщением об ошибке, которое вы получили. Решение - указать "x86" в качестве цели для исполняемого файла.

  • 0
    Просто посмотрел на MySql.Data. Это не выглядит как смешанный режим или привязанный к 32 битам. Мое второе предположение, вероятно, не актуально в этом случае
1

Разум Томми очень важен:

Мой проект ссылался на более раннюю версию MySql.Data.dll по сравнению с тем, что было фактически установлено на моей машине разработки. Это приведет к той же ошибке.

Проверьте файл .config:

И сравните это verisonNr с версией Nr файла, если вы добавите новую ссылку на него.

Решение:

1) удалите строку из вашего файла конфигурации и повторно добавьте ссылку

2) или удалите соединитель MySql.net и установите версию, на которую ссылается ваш проект.

0

Убедитесь, что DLL MySql.Data, которую вы поместили в папку Project, является правильной версией (в этом случае 6.2.2.0).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню