我们正在从实体框架4切换到实体框架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结合使用,作为我们持续集成的工具。 Build用于构建解决方案,测试使用Ms Test运行。
是否有人遇到类似问题或对解决方案有任何想法?
答案 0 :(得分:15)
这真的很糟糕。但幸运的是,一些比我更好的程序员遇到了同样的问题,并做了这篇优秀的帖子: http://robsneuron.blogspot.nl/2013/11/entity-framework-upgrade-to-6.html
将此行添加到我们的DbContext构造函数可以解决问题:
var ensureDLLIsCopied = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
该变量从未使用过,在使用VS构建时不需要,只有确保Ms Build能够完成它的工作......