Я работаю над настольным приложением с С# и базой данных MySQL. Когда я устанавливаю его установщик на моем компьютере, он отлично работает, но когда я устанавливаю его на другую машину, он дает следующее исключение при попытке доступа к БД. Я использую MySQL.Data.dll
для связи с MySQL.
Не удалось загрузить файл или сборку 'MySql.Data, Version = 6.2.2.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d' или одну из его зависимостей. Система не может найти указанный файл.
и MySQL.Data.dll
в папке "Проект" в папке "Файлы программ"
Собственно, когда я запускаю его из своей папки в файле программы, он работает нормально, без ошибок, но когда я пытаюсь запустить его из ярлыка в меню "Пуск", он дает эту ошибку.
Является ли ярлык в меню "Пуск" правильно настроенным рабочим каталогом? (Я подозреваю, что это наиболее вероятный ответ)
Существует ли в GAC (глобальный кэш сборок) другая/некорректная версия MySql.Data.dll? Я видел, что это давало похожие сообщения об ошибках раньше.
Звучит, мне уже 2 года поздно ответить на этот пост, но это может быть полезно для тех, кто все еще сталкивается с этой проблемой, поэтому вот мой вывод от 1 апреля 2012 года 5 вечера EST:
У меня была такая же проблема с одним из моих веб-приложений. И я обнаружил, что указанная проблема возникает, когда вы делаете:
MySql.Data.dll
в папку.MySql.Data.dll
в GACХотя приложение отлично работает на вашей машине разработки, так как оно может видеть файлы, но когда вы развертываете его на какой-либо другой машине, это фактически приводит к ошибке времени выполнения.
В моем случае VS2008 всегда указывал мне ту же ошибку, что и вы упомянули. Затем я сделал следующее:
Кто-то спросил: "Где GAC?":
http://msdn.microsoft.com/en-us/library/yf1d93sz (v = vs .110).aspx
Имеется ли файл MySQL.data.dll в том же каталоге, что и файл .exe?
Если у этого MySQL.data.dll есть соответствующий ключ версии /public, который ищет файл .exe?
Когда это происходит со мной, это обычно одна из двух вещей:
Убедитесь, что на компьютере, где вы получили сообщение об ошибке, отображается файл MySql.Data. (Невероятно, как часто файлы пропадают:-))
Если MySql.Data представляет собой 32-битную DLL смешанного режима (собственный и управляемый код). И исполняемый файл указывает "Любой процессор". На 64-битной машине с 64-разрядным .NET это не удастся с сообщением об ошибке, которое вы получили. Решение - указать "x86" в качестве цели для исполняемого файла.
Разум Томми очень важен:
Мой проект ссылался на более раннюю версию MySql.Data.dll по сравнению с тем, что было фактически установлено на моей машине разработки. Это приведет к той же ошибке.
Проверьте файл .config:
И сравните это verisonNr с версией Nr файла, если вы добавите новую ссылку на него.
Решение:
1) удалите строку из вашего файла конфигурации и повторно добавьте ссылку
2) или удалите соединитель MySql.net и установите версию, на которую ссылается ваш проект.
Убедитесь, что DLL MySql.Data, которую вы поместили в папку Project, является правильной версией (в этом случае 6.2.2.0).