C#Windows Forms + Windows 7 + System.Data.SQLite v.1.0.66.0 =崩溃?

时间:2010-08-02 15:15:49

标签: c# windows-7 system.data.sqlite

嘿伙计们,我目前在Visual Studio 2008中开发的C#Windows窗体应用程序中遇到了Windows 7中非常奇怪的崩溃。

该应用程序 - 在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 个答案:

答案 0 :(得分:1)

我认为它与Windows 7没有任何关系。我怀疑这是因为您使用的是32位Windows XP和Windows Vista,而是64位Windows 7.是这样吗?

解决方案是将Visual Studio项目的平台从“任何CPU”更改为“x86”。否则sqlite DLL将不会加载到您的64位进程,因为它是32位。即使我的理论错误并且您使用的是32位Windows 7,您仍然应该这样做,因为如果不这样做,它仍会在64位系统上崩溃。

不要担心在64位计算机上以32位运行整个进程的性能。这没关系。从Visual Studio 2010开始,“x86”甚至是默认值。

答案 1 :(得分:0)

您是否检查了以下内容:

  • Windows事件日志(开始>“事件查看器”),以查看是否记录了可能有用的内容?
  • 您运行该应用程序的用户是否有权写入驱动器C的根目录:\?
  • 特别是SQLLite导致问题?尝试使用下面的代码来验证它是否特别是SQLLite:

手动创建文件的代码,SQLLite的o / s:

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