C # Windows Forms + Windows 7 + System.Data.SQLite v.1.0.66.0 = сбой? - PullRequest
0 голосов
/ 02 августа 2010

Эй, ребята, в настоящее время я испытываю очень странный сбой в Windows 7 в приложении C # Windows Forms, разработанном в Visual Studio 2008.

Приложение, которое прекрасно работает как в XP, так и в Vista, никогда не открывается; вместо этого «это приложение вызвало ошибку и перестало работать». Я сделал фиктивное приложение со следующим исходным кодом:

using System;
using System.Windows.Forms;
using System.Data.Common;
using System.Data.SQLite;

namespace TesteWin7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            SQLiteConnection.CreateFile("c:\\mydatabasefile.db3");
        }
    }
}

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

Есть мысли по этому поводу? Я использую System.Data.SQLite версия 1.0.66.0. Ура!

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Я не думаю, что это имеет какое-либо отношение к Windows 7. Я подозреваю, что это связано с тем, что вы использовали 32-разрядную версию Windows XP и Windows Vista, но 64-разрядную версию Windows 7. Это так?

Решением этой проблемы является изменение платформы для вашего проекта Visual Studio с «Любого процессора» на «x86». В противном случае DLL-библиотека sqlite не загрузится в ваш 64-битный процесс, потому что он 32-битный. Даже если моя теория неверна и вы использовали 32-битную Windows 7, вы все равно должны это делать, потому что она все равно будет зависать на 64-битных системах, если вы этого не сделаете.

Не беспокойтесь о производительности всего 32-разрядного процесса на 64-разрядном компьютере. Это действительно не имеет значения. Начиная с Visual Studio 2010, «x86» является даже значением по умолчанию.

0 голосов
/ 02 августа 2010

Вы проверили следующее:

  • Журнал событий Windows (Пуск> «Просмотр событий»), чтобы увидеть, было ли зарегистрировано что-либо, что может быть полезно?пользователь, у которого вы запускаете приложение, имеет разрешение на запись в корень диска C: \?
  • Что именно SQLLite вызывает проблему?Попробуйте использовать код ниже, чтобы убедиться, что это именно SQLLite:

Код для создания файла вручную, o / s SQLLite:

var file = System.IO.File.CreateText("C:\TextFile.txt");
file.WriteLine("Blah");
file.Close();
...