私下部署 sql server compact 3.5 sp2 时出错

Posted

技术标签:

【中文标题】私下部署 sql server compact 3.5 sp2 时出错【英文标题】:errors while deploying sql server compact 3.5 sp2 privately 【发布时间】:2010-11-14 17:24:44 【问题描述】:

所以我今天花了很长时间使用 sql lite,发现 .net4 提供程序非常不稳定。所以我想我会使用SqlCE。它应该有一个零配置/安装,而不是它最令人困惑的部署方式。

我检查了许多 SO 问题和这些文章: Link

Link

更多更新的简短指南:http://robindotnet.wordpress.com/2010/02/28/how-to-deploy-the-sqlserver-compact-edition-software-locally/

所以这是我的问题,没有<runtime> 标记位,它可以在我的 DEV 机器上工作,但不能在没有 SqlCE 运行时的 XPSp3 上工作。它给了我一个FileIOLoadException

带有<runtime> 标签它可以在 XpSp3 上运行,但在我的开发盒上它说:

无法加载文件或程序集“System.Data.SqlServerCe,版本=3.5.1.50,Culture=neutral,PublicKeyToken=89845dcd8080cc91”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

我检查了this answer,但我很困惑。此外,显然 msdn 博客文章已关闭,您需要一起包含 7 个 dll。 System.Data.SqlServerCe.dllSystem.Data.SqlServerCe.Entity.dll 都来自安装运行时的名为“Private”的文件夹。

 <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.3.5"></remove>
      <add name="Microsoft SQL Server Compact Data Provider" 
           invariant="System.Data.SqlServerCe.3.5" 
           description=".NET Framework Data Provider for Microsoft SQL Server Compact" 
           type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>
   <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
        <bindingRedirect oldVersion="3.5.1.0-3.5.1.50" newVersion="3.5.1.50"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

这个零配置到底是怎么回事!?我不知道到底出了什么问题,也不知道我做了什么来使它正确?除了一些旧博客之外,其他任何地方都没有这方面的文档吗?

简单地说,一旦我需要部署,我只想能够 xcopy exe 和其他文件,它应该可以工作。那么参考/msdn/documentation/step-by-step 在哪里?部署?

sqlce 也可以在只安装 .net4 的机器上工作,对吗?

【问题讨论】:

【参考方案1】:

我在 S.O. 上发布了一个非常相似的问题。在6851346,我刚刚解决了。

我不知道您是否还在为此苦苦挣扎,但我在 Code Project 上找到了一个名为 Creating a Private Installation for SQL Compact 的解决方案,可以解决我的问题。

我希望这对其他人也有帮助。

【讨论】:

【参考方案2】:

您使用实体框架吗?如果不是,则不需要运行时标记。

您必须将这个:Version=3.5.1.0(在添加标签中)更改为 3.5.1.50,并确保您使用 Private 文件夹中的 System.data.SqlServerCe.dll(它有这个特殊的程序集版本)

【讨论】:

以上是关于私下部署 sql server compact 3.5 sp2 时出错的主要内容,如果未能解决你的问题,请参考以下文章

SQL CE 部署 - AppHarbor - 无法加载 SQL Server Compact 的本机组件

使用 C# 应用程序部署 SQL Server Compact

SQL Server Compact 3.5 版数据库访问被拒绝

SQL Server Express 和 SQL Server Compact Edition

MS Sync/SQL Server Compact 代码在最新版本 SQL Compact 3.5 中失败

asp.net mvc用sql server数据库和用sql server compact数据库有啥区别