ClickOnce使用SQL Server Compact数据库部署WPF应用程序

本文关键字:部署 WPF 应用程序 数据库 Compact 使用 SQL Server ClickOnce | 更新日期: 2023-09-27 18:04:09

我读了这篇文章,它显然解决了WPF应用程序发布的问题,它依赖于SQL Server Compact。我经历了这篇文章的作者所规定的所有步骤,但它对我不起作用。一旦我从SQL Server Compact"私有"文件夹中添加了所有dll,我的应用程序在启动时崩溃。不同之处在于,我使用。net 4.5,而示例处理4.0,我不确定这是否是问题的核心,但它只是不工作与这些设置。

我的应用程序崩溃了,有以下例外:

System.Windows.Markup.XamlParseException

这是我的app.config(包括从文章中添加的):

<?xml version="1.0"?>
<configuration>
   <connectionStrings>
      <add name="TypeAppRelease.Properties.Settings.MyDatabase_1ConnectionString"
           connectionString="Data Source=D:'XXXXXX'XXXXX'XXXXXXX'externals'MyDatabase#1.sdf;Password=XXXXXXX;Persist Security Info=True"
           providerName="Microsoft.SqlServerCe.Client.4.0"  />
   </connectionStrings>
   <system.data>    
      <DbProviderFactories>      
         <remove invariant="System.Data.SqlServerCe.4.0"/>      
         <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, 
               Culture=neutral, 
                PublicKeyToken=89845dcd8080cc91"/>    
      </DbProviderFactories>  
   </system.data>
   <startup> 
       <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
   </startup>
</configuration>

还有一点。我之所以这么做,是因为我只做ClickOnce发布生成的安装文件,它不工作,抱怨

应用程序缺少所需文件....

所以这让我想到了我上面链接的解决方案,但似乎也不起作用。

更新:

我想进一步讨论这个问题,因为到目前为止我还没有解决它。我决定把ClickOnce部署放在一边,只在两台机器上测试调试/发布版本:1)安装了SQL Compact Server;2)只安装了。NET框架。

App在第一台机器上运行正常,在第二台机器上失败。这是非常合乎逻辑的,因为第一个已经安装并运行了Compact SQL。

接下来,我从第一台机器上删除了服务器安装,并再次运行应用程序。它仍然可以工作,但不适用于第二台PC。我得到的错误是

System.IO.FileLoadException

我不明白为什么我得到了它,为什么我在第一台机器上没有得到相同的结果。

可能是64/32位操作系统的问题?PC1运行Windows 7 64位,PC2运行x86。

ClickOnce使用SQL Server Compact数据库部署WPF应用程序

如果您使用ADO。. NET对象(SqlCeCommand, DataSet)而不是实体框架(如我的博客文章中所述),您必须在项目文件夹(汇编版本4.0.0.1)中引用System.Data.SqlServerCe.dll,而不是GAC(汇编版本4.0.0.0)中的dll。