当我尝试在其他系统上运行我的应用程序(在我的情况下,Windows XP 使用 VM Virtual Box 虚拟化)时,尝试连接到数据库时出现错误(我已经在我的 XP 版本上复制了我的发布文件夹,这个文件夹包含我的 sdf 数据库文件)。我的数据库是 SQL Server Compact 数据库(sdf 文件)。
这是我连接到我的数据库的代码:
if (_Connection == null)
_Connection = new SqlCeConnection(@"Data Source = .\Database.sdf");
当我尝试我的开发环境(Windows 8,VS 2012)时,它运行良好。
该应用程序在我的 XP 机器上启动良好,但在必须完成与数据库的连接时崩溃。
我尝试了这种方法: Connection string with relative path to the database file
代码 :
string ConnectionString = @"Data Source=|DataDirectory|\Database.sdf";
string executable = System.Reflection.Assembly.GetExecutingAssembly().Location;
string path = (System.IO.Path.GetDirectoryName(executable));
AppDomain.CurrentDomain.SetData("DataDirectory", path);
_Connection = new SqlCeConnection(ConnectionString);
但是当我尝试在发布模式下编译时,我遇到了一些错误:
错误 1 找不到数据库文件。检查数据库的路径。[ 数据源 = C:\Users\Benj\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\1r55aqij.l5f\p2ffjoyu.4ex\Database.sdf ] C:\Users\Benj\Travail\Projets\UNISO\ Programme\UNISO V1.0\UNISO\UNISO\Pages\FAQEdit.xaml 14 9 UNISO
数据库必须部署在应用程序文件夹中。
我已经尝试过在不安装 sql server compact 的情况下部署我的应用程序:http: //msdn.microsoft.com/en-us/library/vstudio/aa983326.aspx
但我不想使用发布向导。我只是想通过我的发布文件夹共享和运行我的程序。
编辑 :
当我在我的 XP VM 上安装SQL Server Compact时,它运行良好。所以问题不在于 sdf 文件路径。问题可能来自将 SQL Server Compact DLL 添加到我的项目的方式。但是我已经完全按照上面链接中所说的做了(使用向导进行部署除外)。
更新 :
正如您在此链接上看到的那样, http: //msdn.microsoft.com/en-us/library/vstudio/aa983326.aspx,有两种方法可以部署 SQL Server Compact 应用程序。第一种方法是使用传统的 Windows 安装程序。我试过了,它运行良好,我的应用程序运行良好,但我不想使用这种方式(我不想在客户端计算机上安装东西,我只想共享一个独立的文件夹)。第二种方法是基于私有文件的部署方法(这是我想要使用的方法)。我遵循了上面链接中“基于私有文件的部署”部分中描述的所有说明,但是当我运行应用程序时,它会在连接到数据库时停止。有什么我想念的吗?