Приложение WPF не работает на других компьютерах

Вопрос:

Я создал простое приложение WPF, чтобы получить некоторый опыт работы с ним. Все, что он делает, это получить информацию из базы данных, когда пользователь нажимает кнопку.
Приложение отлично работает на моем ПК (с использованием опции публикации), но когда я попытался запустить его на своем ноутбуке и ПК моих друзей, приложение разбилось так же быстро, как нажата кнопка.
Я на 99% уверен, что он имеет какое-то отношение к Entity Framework, которое я использую для связи с базой данных (вся функция, которая запускается при нажатии кнопки, является контактом и извлекает информацию из БД).

После поиска ответов в google я выяснил, что это может иметь какое-то отношение к установке.net на ПК, или к проектам.

Однако версия.net FW такая же, как на моем ПК, так и на моем ноутбуке, и все ссылки были отмечены как локальные копии (только для тестирования!).

Что еще может вызвать такую проблему? Я действительно понятия не имею…

ОБНОВИТЬ

Используя исключения, я узнал, что я получил ошибку:
The specified store provider cannot be found in the configuration, or is not valid.

Я также решил эту проблему, поиская глубже в Google.
Решение можно найти ниже…

Счастливое кодирование!

Лучший ответ:

Я, наконец, решил это!

Вот как это сделать:
1) Убедитесь, что в вашем проекте есть ссылка на MySql.Data.dll, MySql.Web.dll, MySql.Data.Entity.dll и System.Data.Entity.dll.

2) Установите все вышеперечисленное в Copy-Local.

3) Добавьте следующие строки в файл App.config:

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

4) Нажмите ссылку на MySQL.Data и проверьте ее версию. Его можно найти в окне “Свойства” под браузером решений после его выбора.

5) Измените Version=6.4.4.0 на версию MySql.Data.dll. Шахта была 6.5.4.0, которая является самой новой, но более старой версией должна работать так же хорошо.

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

Ответ №1

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

В приложении вы получаете доступ к базе данных через Entity Framework. Я могу только догадываться, что ваше соединение с базой данных терпит неудачу и из-за этого ваше приложение рушится. Убедитесь, что у вас есть база данных для приложения.

Это также хорошая идея для регистрации ваших исключений, чтобы вы могли просматривать детали при сбое приложения.

Ответ №2

Попробуйте использовать блок Try Catch, окружающий ваш код внутри обработчика событий кнопки, например:

        try
{
//here your database logic

}
catch (Exception ex )
{
MessageBox.Show(ex.Message);
//todo do something usefull
}

Это даст вам информацию о том, почему приложение не удалось.

Оцените статью
TechArks.Ru
Добавить комментарий