Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET 3.5到.NET 4.5.1迁移问题_C#_.net_Visual Studio 2013 - Fatal编程技术网

C# .NET 3.5到.NET 4.5.1迁移问题

C# .NET 3.5到.NET 4.5.1迁移问题,c#,.net,visual-studio-2013,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, PublicKeyToke

一些背景:我最近从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]"/>
这是我打电话时抛出的

DAL.App_Data.MyEntities me = new DAL.App_Data.MyEntities();

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

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

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

<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文件夹的内容,以确保其版本正确

更新

  • 在VS解决方案资源管理器中的项目下,展开“引用”文件夹
  • 查找System.Data.Entity的条目
  • 如果没有找到,请跳到第5步
  • 在部件上单击鼠标右键,然后将其删除
  • 在“引用”文件夹上单击鼠标右键,然后单击“添加引用”
  • 单击左窗格中的程序集,然后搜索System.Data.Entity
  • 选中System.Data.Entity 4.0.0.0旁边的框,然后单击确定
  • 重新生成解决方案,然后重试

  • 我假设这些编译时错误?您是否已将项目的引用更新为
    System.Data.Entity
    ?很抱歉-我不太清楚您的意思-您能否更具体地说明“正在添加”?他可能是指删除旧的错误引用,即添加正确的引用。我曾尝试添加dependentAssembly块,但没有任何区别。我正在查看我们的bin/obj文件,其中没有任何让人想起System.Data.Entity的内容,也许这是问题的一部分?是的。如果未将程序集复制到bin文件夹,则ASP.NET在运行应用程序时无法找到它。
    <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>