注意到这个奇怪的事情,也许这是一个错误,但我可能会遗漏一些东西.
假设您有一个包含两个项目的解决方案:一个是MVC3项目,另一个是数据访问类库(Entity Framework模型类,数据上下文等).
类库引用EntityFramework(EF6)和EntityFramework.SqlServer库.
MVC项目引用了这个类库DAL. DAL库可以由应用程序之外的某些其他代码使用,因此可以将其与Web项目分离.
无论如何,似乎在发布MVC3项目时,该进程错过了将EntityFramework.SqlServer程序集复制到publish / bin目录.但是,它确实发布了基本的EntityFramework dll以及其他库和类库本身.
有没有办法让发布者也发布所需的SqlServer驱动程序?
解决方法
好吧,所以在一些额外的Google-fu之后,似乎解决方法是创建对缺少的程序集的一些引用,即使代码未使用.
.NET MVC 3 Deployment package missing references
我使用的解决方法是在数据上下文的构造函数中添加简单的测试行:
bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null;