Entity Framework 调试和发布版本之间缺少引用

Entity Framework References go missing between debug and release build

在调试版本和发布版本之间的区别及其引用的使用中,一定有一些我不明白的地方。我正在使用 Entity Framework 6 连接到先前已设置的数据库。我能够在调试模式下成功构建和 运行 项目。如果我将其更改为发布模式,我会立即收到构建错误,指示无法再找到原来的名称空间和类型。我检查了一下,据我所知,他们都以 .Net 4.5 为目标框架,我发现这对其他一些人来说可能是个问题。我看不出我的解决方案资源管理器中引用下列出的内容有什么不同。

我正在使用 visual studio 2013。很高兴提供任何代码,但我不知道什么是最相关的。

我遇到的一些错误:

The type or namespace name 'Entity' does not exist in the namespace    System.Data' (are you missing an assembly reference?) in Holds.Context.cs
The type or namespace name 'DbContext' could not be found (are you missing a using directive or an assembly reference?) in Holds.Context.cs
The type or namespace name 'DbSet' could not be found (are you missing a using directive or an assembly reference?) in Holds.Context.cs 

感谢您提供的任何指导。

切换到发布模式然后在问题项目上重新安装 entity framework 解决了我的问题。

为了解决这个问题,我使用了@OomPiet 的回答。对我来说,步骤如下:

  1. 切换到调试模式
  2. 重建解决方案 - 构建成功
  3. 切换到释放模式
  4. 重建解决方案 - 构建失败
  5. Solution Explorer中点击不会构建的项目(我的是单元测试项目)
  6. 右键单击项目 > Manage NuGet Packages
  7. 确保选择 Installed packages
  8. Select EntityFramework
  9. 单击 Uninstall 并关闭对话框
  10. 单击 Solution Explorer 中的解决方案
  11. 右击 > Manage NuGet Packages for Solution
  12. 确保选择 Installed packages
  13. Select EntityFramework
  14. 点击Manage
  15. 确保导致问题的项目是 checked
  16. 安装后单击 OK 并关闭对话框
  17. 单击 Solution Explorer
  18. 中的解决方案
  19. 右击'Rebuild Solution'

现在我可以在 DebugRelease 之间切换而编译不会失败。希望对您有所帮助

编辑: 如果您只有一个项目使用 EF,请参阅下面 @LuckyLikey 的评论,他指出 搜索 EF,并将其安装在该项目中.

好的,@Dim 和@Oompiet 的答案是正确的,但是有一个非常简单的方法可以通过包管理器控制台来做到这一点:

Update-Package -reinstall EntityFramework

这将在解决方案级别进行,或者如果您想在项目级别进行,只需执行以下操作:

Update-Package -reinstall EntityFramework -p <YouProjectName>

在调试模式下,程序集(pdb 文件)有额外的信息。

这允许应用程序获取额外的依赖项。

release模式下没有这些东西,所以必须引用程序集。

执行@Dib 的步骤 10 到 18 将解决问题。