.NET 3.5到.NET 4.5.1迁移问题

时间:2014-01-15 16:05:49

标签: c# .net visual-studio-2013

一些背景:我最近从VS2008升级到了VS2013,它顺利完成了。然后,我更新了项目中每个解决方案的目标框架(Web门户,三个服务,数据访问层和报告库)。更改框架后,我收到此错误:

Error   174 Assembly 'DAL', Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[token]' which has a higher version than referenced assembly 'System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=[token]'       

所以我将Web.Config文件中的引用更新为4.0.0.0:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[token]"/>

这解决了当前的错误(当然),但现在我遇到了8个新的错误,这些错误都属于这种性质:

Error   174 The type 'System.Data.Objects.ObjectContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[token]'.

当我打电话

时抛出
DAL.App_Data.MyEntities me = new DAL.App_Data.MyEntities();

我已经检查过,DAL和它正在调用的项目都引用了版本4.0.0.0的System.Data.Entity。 DAL在项目文件中有它,另一个在web.config文件中有它。

2 个答案:

答案 0 :(得分:1)

您是否尝试在配置文件中添加绑定重定向?

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Data.Entity" publicKeyToken="[token]" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

即使VS告诉您dll版本为4.0,也请仔细检查您的bin文件夹。它可能挂在旧版本上。您始终可以从bin和obj文件夹中删除文件,然后重建。重建后,再次仔细检查实际复制到bin文件夹的内容,以确保它是正确的版本。

<强>更新

  1. 在VS解决方案资源管理器中,在您的项目下,展开“引用”文件夹。
  2. 找到System.Data.Entity的条目。
  3. 如果您没有找到,请跳至步骤#5。
  4. 右键单击程序集并将其删除。
  5. 右键单击“引用”文件夹,然后单击“添加引用”
  6. 单击左窗格中的“程序集”,然后搜索“System.Data.Entity”
  7. 选中System.Data.Entity 4.0.0.0旁边的框,然后单击“确定”。
  8. 重建解决方案,然后重试。

答案 1 :(得分:0)

您是否尝试过重新添加System.Data.Entity dll? 该错误表明您仍然缺少该引用。