【问题标题】:ClickOnce deploy of WPF app with SQL Server Compact databaseClickOnce 使用 SQL Server Compact 数据库部署 WPF 应用程序
【发布时间】:2013-03-16 22:03:20
【问题描述】:

我阅读了this 帖子,该帖子显然解决了具有 SQL Server Compact 依赖项的 WPF 应用程序发布的问题。我完成了this 帖子作者规定的所有步骤,但它对我不起作用。从 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 Server;2) 仅安装了 NET 框架。

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

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

System.IO.FileLoadException

我不知道为什么我会得到它以及为什么我在第一台机器上没有得到相同的结果。

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

【问题讨论】:

  • 不要在表单构造函数中运行代码,在 OnLoaded 事件中运行它,并修复与 SQL Compact 问题无关的 XAML 错误
  • 但是我没有 XAML 可见的错误。它是在运行时使用你的 hack 时抛出的。
  • 这不是黑客。确保所有必需的文件都作为内容包含,并设置为始终复制
  • 一切都像你建议的那样。你用 WPF 4.5 试过了吗?
  • 不,但这不会产生任何差异 - 建议您首先在没有 ClickOnce 的情况下进行部署以测试当时的问题

标签: c# .net wpf sql-server-ce-4


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多