ClickOnce部署后未检测到SQL Server Compact 4.0数据库

时间:2014-08-21 19:12:56

标签: c# sql wpf sql-server-ce clickonce

我有一个WPF C#应用程序和一个SQL Server Compact 4.0数据库。最初,我的数据源指向数据库的位置,如下所示:

public static SqlCeConnection sqlCeConnection = new SqlCeConnection(@"C:\VSP Road Maintenance Solution\VSPApp_Mono\VSPApp\VSPCompactDatabasse.sdf");

这在我的本地计算机上运行良好,但是当我想打包应用程序(ClickOnce)时,它在客户端的计算机上无效。在阅读有关创建ms sql server压缩数据库并部署它的MSDN文档以及其他相关类似问题(例如http://social.msdn.microsoft.com/Forums/sqlserver/en-US/dc31ea59-5718-49b6-9f1f-7039da425296/where-is-datadirectory-?forum=sqlcehttp://msdn.microsoft.com/en-us/library/37z40s1c(v=vs.110).aspx

之后

我尝试通过C#访问AppDomain(在App.xaml.cs中):

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);

    Process p = Process.GetCurrentProcess(); // Pick desired process
    p.PriorityClass = ProcessPriorityClass.RealTime; // Assign priority

    AppDomain currentDomain = AppDomain.CurrentDomain;
    currentDomain.SetData("DataDirectory", @"C:\VSP Road Maintenance Solution\VSPApp_Mono\VSPApp");
}

现在只需创建一个与数据库的连接:

public static string dbFileName = "VspCompactDatabase.sdf";
SqlCeConnection sqlCeConnection = new SqlCeConnection(@"Data Source=|DataDirectory|\" +dbFileName);

这也适用于我的本地计算机,但是当我创建ClickOnce包时。该应用程序似乎没有找到数据库。所有必备软件都已安装。为什么当应用程序部署在不同的机器上时,似乎与数据库无关?

0 个答案:

没有答案