私有地部署sql server compact 3.5 sp2时出错

时间:2010-11-14 17:24:45

标签: deployment .net-4.0 sql-server-ce

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

我检查了很多SO问题和这些文章: http://blogs.msdn.com/b/stevelasker/archive/2008/10/22/privately-deploying-sql-server-compact-with-the-ado-net-entity-provider.aspx

http://blogs.msdn.com/b/sqlservercompact/archive/2010/05/12/troubleshooting-problem-with-private-deployment-of-sql-server-compact-3-5sp2-entity-dll.aspx

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

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

使用<runtime&gt;标签它适用于XpSp3但在我的开发盒上它说:

无法加载文件或程序集'System.Data.SqlServerCe,Version = 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 /的步骤在哪里如何部署?

sqlce还可以在只安装了.net4的盒子上工作吗?

2 个答案:

答案 0 :(得分:2)

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

我不知道你是否还在努力解决这个问题,但我找到了一个名为Creating a Private Installation for SQL Compact的Code Project解决方案,解决了我的问题。

我希望这也有助于其他人。

答案 1 :(得分:1)

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

您必须将此更改:Version = 3.5.1.0(在add标记中)更改为3.5.1.50,并确保使用Private文件夹中的System.data.SqlServerCe.dll(它具有此特殊程序集版本)< / p>