Buildserver 找不到 Entity Framework Sql Provider

Posted

技术标签:

【中文标题】Buildserver 找不到 Entity Framework Sql Provider【英文标题】:Buildserver can not find Entity Framework Sql Provider 【发布时间】:2014-04-24 01:44:36 【问题描述】:

我们正在从 Entity Framework 4 切换到 Entity Framework 6。包管理器完成了它的工作,解决方案顺利运行了它的测试。

但是,在构建服务器上,我们在运行测试时收到以下错误消息: 初始化方法 xxx.SetUp 抛出异常。 System.InvalidOperationException:

实体框架提供程序类型 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' 在应用程序配置文件中注册 对于具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序 无法加载。确保程序集限定名称是 并且该程序集可用于正在运行的应用程序。 更多信息请见http://go.microsoft.com/fwlink/?LinkId=260882 信息。

如果我们在构建服务器上本地打开解决方案,并在那里安装 Visual Studio,则测试再次运行而不会出错。

我们将 Cruise Control .Net 与 SVN 结合使用作为我们持续集成的工具。 Ms Build 用于构建解决方案,并使用 Ms Test 运行测试。

有没有人遇到过类似的问题或对解决方案有任何想法?

【问题讨论】:

I have posted another solution here without changing your code 【参考方案1】:

这真的很糟糕。但幸运的是,一些比我更好的程序员也遇到了同样的问题,并发表了这篇优秀的文章: http://robsneuron.blogspot.nl/2013/11/entity-framework-upgrade-to-6.html

将这一行添加到我们的 DbContext 构造函数可以解决问题:

var ensureDLLIsCopied = System.Data.Entity.SqlServer.SqlProviderServices.Instance;

该变量从未使用过,在使用 VS 构建时不需要它,它只是为了确保 Ms Build 完成它的工作......

【讨论】:

以上是关于Buildserver 找不到 Entity Framework Sql Provider的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 错误:在链配置的命名空间 App\Entity 中找不到类 xxx [重复]

测试 Symfony 包:找不到教义.orm.entity

找不到从方法引用的类 'org.apache.http.entity.mime.content.Filebody'

NestJS - 测试套件无法运行从“comment/comment.entity.ts”中找不到模块“src/article/article.entity”

找不到 System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer

找不到源类型“System.Data.Entity.DbSet”的查询模式的实现