无法加载文件或程序集'System.Core, Version=3.5.0.0'。

3
我有一个ASP.NET 3.5解决方案,最近升级到了.NET 4.0。尽管如此,似乎大部分项目仍然设置为针对.NET 3.5框架。
话虽如此,我现在无法调试这些项目。我收到以下错误:
解析器错误消息:找不到文件或程序集“System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其某个依赖项。系统找不到指定的文件。
=== 预绑定状态信息 === LOG: 用户 = myusername LOG: 显示名称 = System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (完全指定) LOG: Appbase = file:///C:/Projects/myprojectpath/ LOG: 初始 PrivatePath = C:\Projects\myprojectpath\bin 调用程序集:(未知)。 === LOG:此绑定在默认加载上下文中开始。 LOG: 使用应用程序配置文件:C:\Projects\myprojectpath\web.config LOG: 使用C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config中的机器配置文件。 LOG: 后策略引用:System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 LOG: 曾经看到相同的绑定,并且已失败,hr = 0x80070002。
我已按照此处所述手动编辑了我的项目文件,并添加了以下行:
<Reference Include="System.Core">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>

但是这样做没有用。有人可以解释一下为什么我会收到这个错误信息以及如何解决它吗?谢谢!


当您从VS项目属性更改目标框架为.NET 4时,它应自动更新引用。 - M. Mennan Kara
我尝试将目标框架更改为4.0,但没有帮助。 - Jeremy Wiggins
可能是因为手动编辑的原因,通常需要单独更改每个项目的目标框架。我建议您创建一个相同类型的.net4项目,并尝试比较.csproj文件源以找出差异。 - M. Mennan Kara
2个回答

1

我曾经遇到过使用的控件,例如:

<assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

        </assemblies>

我们改为:

 <assemblies>
            <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

        </assemblies>

或者反过来。你可能想要检查一下。或者将整个项目(框架或页面)迁移到 .net 4.0 版本。有时候,当我需要在不同的框架上工作时,我会删除目标框架行。

1
在我的情况下,web.config 文件中有一行需要被删除。
<pages enableEventValidation="true">
    <namespaces>
        <add namespace="System.Linq"/>
    </namespaces>
    <controls>
        <!--<add tagPrefix="asp" namespace="System.Linq" assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>-->
    </controls>
</pages>

实际上,我还可以安全地注释掉<add namespace="System.Linq"/>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接