【问题标题】:EntityFramework.SqlServer not deployed in web publishEntityFramework.SqlServer 未部署在 Web 发布中
【发布时间】:2013-12-28 05:54:23
【问题描述】:

注意到发生了这种奇怪的事情,也许这是一个错误,但我自己可能遗漏了一些东西。

假设您有一个包含两个项目的解决方案:一个是 MVC3 项目,另一个是用于数据访问的类库(实体框架模型类、数据上下文等)。

类库引用EntityFramework (EF6) 和EntityFramework.SqlServer 库。

并且MVC项目引用了这个类库DALDAL 库可能被应用程序之外的一些其他代码使用,从而将其与 Web 项目分离。

无论如何,似乎在发布 MVC3 项目时,该过程错过了将 EntityFramework.SqlServer 程序集复制到 publish/bin 目录的过程。但是,它确实将基础 EntityFramework dll 与其他库和类库本身一起发布。

有没有办法让发布者也发布所需的 SqlServer 驱动程序?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 entity-framework visual-studio-2012 ef-code-first


    【解决方案1】:

    好的,所以在一些额外的 Google-fu 之后,似乎一种解决方法是创建一些对缺少的程序集的引用,即使代码未被使用。

    .NET MVC 3 Deployment package missing references

    我使用的解决方法是在数据上下文的构造函数中添加简单的测试行:

    bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null;
    

    【讨论】:

    • 您的意思是在 Content.tt 文件中吗?每当您进行更改时,它不会被覆盖吗?
    • 我不知道为什么会这样,但我只是创建了一个内部类并将这个语句放在构造函数中,它解决了问题。
    • @RichC,不,这与 TT 无关。我应该补充一点,这是对 Code-first only 的修复
    • 哇。这行得通。这甚至是如何工作的?困惑! - 不只是代码优先,设计也优先
    • 哦,我现在明白了,这一切都是强制 VS 将 dll 复制到 applicaitons bin 目录中。有没有另一种不用代码的方法?
    【解决方案2】:

    我也有同样的情况。我通过 NuGet 将 EF 安装到我的 Web 项目中(我仍然不在那里使用它,只是引用了库),它解决了我的问题。

    此外,我无法为其他解决方案重现这种情况 - 我创建了新的 Web 项目并引用了新的库 - 但部署工作正常。

    【讨论】:

      【解决方案3】:

      在项目的包文件中添加实体框架包

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多