注意到这个奇怪的事情,也许这是一个错误,但我可能会遗漏一些东西。
假设您有一个包含两个项目的解决方案:一个是MVC3项目,另一个是数据访问的类库(实体框架模型类,数据上下文等)。
类库引用EntityFramework
(EF6)和EntityFramework.SqlServer
库。
MVC项目引用了这个类库DAL
。 DAL
库可能会被应用程序之外的其他代码使用,因此可以将其与Web项目分离。
无论如何,似乎在发布MVC3项目时,进程错过了将EntityFramework.SqlServer
程序集复制到publish / bin目录。但是,它 发布基础EntityFramework
dll以及其他库和类库本身。
有没有办法让发布者也发布所需的SqlServer驱动程序?
答案 0 :(得分:16)
好吧,所以在一些额外的Google-fu之后,似乎解决方法是创建一些对缺少的程序集的引用,即使代码未使用。
.NET MVC 3 Deployment package missing references
我使用的解决方法是在数据上下文的构造函数中添加简单的测试行:
bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null;
答案 1 :(得分:4)
我有同样的情况。我通过NuGet将EF安装到我的web项目中(我仍然没有在那里使用它,只是引用了库)并且它解决了我的问题。
此外,我无法为其他解决方案重现这种情况 - 我创建了新的Web项目并引用了新的lib - 但部署工作正常。
答案 2 :(得分:1)
在项目的包文件中添加实体框架包