调试和发布版本之间缺少实体框架参考

时间:2015-06-02 12:58:59

标签: c# entity-framework-6 console-application

在调试版本和发布版本之间的差异及其对引用的使用中,必须有一些我无法理解的东西。我使用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 

感谢您提供的任何指导。

4 个答案:

答案 0 :(得分:10)

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

  1. 切换到调试模式
  2. 重建解决方案 - 构建成功
  3. 切换到发布模式
  4. 重建解决方案 - 构建失败
  5. Solution Explorer点击不会构建的项目(我的是一个单元测试项目)
  6. 右键单击项目> Manage NuGet Packages
  7. 确保选择Installed packages
  8. 选择EntityFramework
  9. 点击Uninstall并关闭对话框
  10. 点击Solution Explorer
  11. 中的解决方案
  12. 右键点击> Manage NuGet Packages for Solution
  13. 确保选择Installed packages
  14. 选择EntityFramework
  15. 点击Manage
  16. 确保导致问题的项目为checked
  17. 点击OK并在安装后关闭对话框
  18. 点击Solution Explorer
  19. 中的点击解决方案
  20. 右键单击“重建解决方案”
  21. 现在我可以在DebugRelease之间切换,而不会导致编译失败。我希望有帮助

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

答案 1 :(得分:6)

切换到发布模式,然后在问题项目上重新安装实体框架,解决了我的问题。

答案 2 :(得分:6)

好的@Dim和@Oompiet的答案是正确的,但通过软件包管理器控制台有一个非常简单的方法:

Update-Package -reinstall EntityFramework

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

Update-Package -reinstall EntityFramework -p <YouProjectName>

答案 3 :(得分:0)

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

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

在发布模式下,没有这样的东西,因此必须引用程序集。

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