所以今天我花了很多时间用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
所以这是我的问题,没有<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.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 /的步骤在哪里如何部署?
sqlce还可以在只安装了.net4的盒子上工作吗?
答案 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>