Deployment SQL Server Compact 4.0私有部署,带有Entity Framework 6.0和NuGet

Deployment SQL Server Compact 4.0私有部署,带有Entity Framework 6.0和NuGet,deployment,sql-server-ce,nuget-package,entity-framework-6,Deployment,Sql Server Ce,Nuget Package,Entity Framework 6,我已经标准地安装了EntityFramework6和SQLServerCompact4.0的WPF项目。 构建项目时,SQL Server CE部署所需的所有文件都正确复制到Release文件夹,包括System.Data.SqlServerCe.dll 但在未安装SQL Server Compact的计算机上运行project会抛出System.IO.FileLoadException 在我的开发环境中,是从GAC加载的System.Data.SqlServerCe.dll。我找到了此参考,其

我已经标准地安装了EntityFramework6和SQLServerCompact4.0的WPF项目。 构建项目时,SQL Server CE部署所需的所有文件都正确复制到
Release
文件夹,包括
System.Data.SqlServerCe.dll

但在未安装SQL Server Compact的计算机上运行project会抛出
System.IO.FileLoadException

在我的开发环境中,是从GAC加载的
System.Data.SqlServerCe.dll
。我找到了此参考,其中解释了DLL的版本号:

我假设
System.Data.SqlServerCe.dll
AssemblyFormNuget的版本是4.0.0.0

因此,我已手动将项目中的
System.Data.SqlServerCe.dll
引用从专用文件夹更改为4.0.0.1文件,并将
System.Data.SqlServerCe.dll
4.0.0.1复制到生产机器

我更改了app.config,如下所示:

  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>

现在我在开发机器上遇到了这个异常:

给定的连接不是“SqlCeConnection”类型

在生产机器上,我得到
System.Data.Entity.Core.EntityException


是否有机会使用NuGet和EF 6进行私有部署?或者是否需要手动复制x86、amd64文件夹中的所有文件

System.Data.Entity.Core.EntityException在我的应用程序中已经出现问题,部署后我也忘了更改DB名称

我遵循了这一指南,现在它正在发挥作用:


您需要安装EntityFramework.SqlServerCompact 6.0.1软件包,该软件包将在app.config中创建相关设置。您不能使用4.0.0.1版本,但必须使用4.0.0.0程序集版本。我将创建一篇关于EF6和SQLCE4私有部署的新博文。非常感谢您的快速回复!那太好了。我已经安装了上面提到的软件包。我使用实体框架引用表单客户端和模型项目。但我仍然无法理解为什么我在app.config中获得带有4.0.0.0引用的System.Data.Entity.Core.EntityException;我看不到关于这个例外的更多细节。也许你可以用这篇博文作为灵感:?是的,这些都是很棒的文章,但是为什么我要复制所有的SQL CE文件,而所有提到的文件都已经从NuGet包中复制了呢。是不是因为System.Data.SqlServerCe.dll以外的文件的程序集版本?我相信我正在努力解决我的bin/release文件夹、引用和配置文件应该是什么样子的问题,这样我就可以简单地复制内容或使用ClickOnce.No。可以说,博客帖子描述了ClickOnce/xcopy。