代码之家  ›  专栏  ›  技术社区  ›  gideon

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

  •  4
  • gideon  · 技术社区  · 15 年前

    所以我今天花了不少时间在sql lite上,发现.net4提供程序非常不稳定。所以我想我会用SqlCE。它应该有一个 零配置/安装 相反,这是最混乱的部署方式。

    我检查了许多这样的问题和这些文章: 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> 标记位,它在我的开发机器上工作,但在没有SqlCE运行时的XPSp3上不工作。它给了我一个 FileIOLoadException

    <runtime >tag在XpSp3上有效,但在我的dev box上,它显示:

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

    我查过了 this answer 但我很困惑。另外,显然msdn博客文章已经关闭,您需要将7个dll全部包含在一起。以及 System.Data.SqlServerCe.dll System.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的盒子上工作,对吗?

    2 回复  |  直到 9 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    我在S.O.上也遇到过类似的问题 6851346 ,我就解决了。

    我不知道你是否还在挣扎,但我在代码项目中找到了一个名为 Creating a Private Installation for SQL Compact 解决了我的问题。

    我希望这也能帮助别人。

        2
  •  1
  •   ErikEJ    15 年前

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

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