2015-11-17 5 views
0

У меня есть приложение, которое отлично работает в моей системе (как в среде IDE, так и при установке), но полностью не работает при установке в любой другой системе.Установленное приложение не может загрузить MySQL.Data.DLL?

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

[Вставить бесконечную цепочку проклятий, ругательств и др. R-rated здесь].

Почему? ЗАЧЕМ? ПОЧЕМУ ?!ПОЧЕМУ?!?!СЕРЬЕЗИЯ - ЧТО ЭТО?

+0

возможной причиной может быть несоответствие версии mysql. на вашей клиентской машине. Вы сравнили это с вашей версией mysql? – Bilal

+0

Хорошо, так ... если соединитель MySQL установлен на клиентской системе, это может испортить это? – Will

+0

он должен быть установлен там .. и версия должна быть такой же, как и ваш MySql-коннектор вашего приложения, иначе как он сможет узнать MySql.Data.dll ???это, безусловно, screq это – Bilal

ответ

2

При использовании MySql в приложениях и установить на клиентских машинах, он будет искать MySql.Data.dll в клиентской машине и идет по пути

C:\Program Files (x86)\MySQL\MySQL Connector Net X.X.X\Assemblies\ (если вы установили разъем MySql в C диска)

Изучая Assemblies папку, вы увидите это MySql.Data.dll Проверьте версию этого файла и аналогично проверьте свои MySql.Data.dll, они должны быть одинаковыми.

Средний пользователь неспециалиста не имеет установленного соединителя MySQL. Что я должен делать, когда эта программа выпущена для общего распространения, и Джон Q. Пользователь не может запустить ее, потому что у них нет этой неясной ... вещи установленной?

Вашего приложение должны пакета всех его каждые реквизиты с ним, поэтому, когда клиент установить его, за реквизит должен также установить с помощью программного обеспечения. Допустим, я разработал приложение с MySql connector 6.9.6.0.

DO следующие вещи

  1. Пакет MySql Connector с программным обеспечением сборки
  2. указать MySql Connector версию в App.config файле.

    <system.data> 
        <DbProviderFactories> 
         <clear/> 
         <remove invariant="MySql.Data.MySqlClient"/> 
         <add name="MySql.Data.MySqlClient" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.9.6.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d"/> 
        </DbProviderFactories> 
    </system.data> 
    

Теперь клиентская машина будет специально искать указанную версию в app.config.

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

Смежные вопросы