2010-11-14 107 views
4

因此,我今天花了相當一段時間與sql lite,並看到.net4提供商非常不穩定。所以我想我會用SqlCE。它應該有一個零配置/安裝,而不是它的最困惑的方式來部署的東西。錯誤,同時部署sql server compact 3.5 sp2私人

我查了許多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

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

因此,這裏是我的問題,沒有<runtime>標記一下,在我的DEV機器上工作,但不在沒有SqlCE運行時的XPSp3上工作。它給了我一個FileIOLoadException

WITH的<runtime>標籤它適用於XPSP3,但在我的dev的盒子,它說:

無法加載文件或程序集「System.Data.SqlServerCe,版本= 3.5.1.50,文化=中立,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 /文檔/一步一步的如何部署?

此外,sqlce將工作在只有.net4安裝的盒子上嗎?

回答

2

我在S.O上發佈了一個非常類似的問題。在6851346,我剛解決它。

我不知道你是否還在爲此苦苦掙扎,但是我在Code Project上找到了一個名爲Creating a Private Installation for SQL Compact的解決方案,它解決了我的問題。

我希望這可以幫助其他人。

1

你使用Entity Framework嗎?如果不是,則運行時標籤不是必需的。

您必須將此版本= 3.5.1.0(在添加標記中)更改爲3.5.1.50,並確保使用Private文件夾中的System.data.SqlServerCe.dll(它具有此特殊程序集版本)