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