0

我读了这篇文章,它显然解决了具有 SQL Server Compact 依赖项的 WPF 应用程序发布的问题。我完成了这篇文章作者规定的所有步骤, 但它对我不起作用。从 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 部署,只在 2 台机器上测试 Debug/Release 构建:1)安装了 SQL Compact 服务器;2)只安装了 NET 框架。

该应用程序在第一台机器上运行正常,但在第二台机器上失败。这是非常合乎逻辑的,因为第一台机器安装并运行了 Compact SQL。

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

System.IO.FileLoadException

我无法弄清楚为什么我得到它以及为什么我在第一台机器上没有得到相同的结果。

也许它是 64 / 32 位操作系统的东西?PC1 运行 Windows 7 64 位,而 PC2 x86。

4

1 回答 1

1

我使用 ADO.NET 对象(SqlCeCommand、DataSet)而不是实体框架(如我的博客文章中所述),您必须在项目文件夹(程序集版本 4.0.0.1)中引用 System.Data.SqlServerCe.dll 而不是 dll您的 GAC(程序集版本 4.0.0.0)。我已经用这些信息更新了我的博客文章。

于 2013-03-22T06:41:39.167 回答