You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将C#项目从AnyCPU切换为x64时出现System.Web编译错误

解决VS2013 .NET2.0项目x64编译时System.Web.dll加载错误的问题

我之前也碰到过一模一样的情况,核心原因其实很好理解:当你把项目目标平台切换到x64时,编译器错误地尝试加载32位版本的System.Web.dll(也就是C:\Windows\Microsoft.NET\Framework\v2.0.50727下的文件),而64位进程根本无法加载32位程序集,所以才抛出了“格式不正确”的错误。

下面是我亲测有效的几个解决步骤,你可以按顺序尝试:

  • 检查并修正System.Web的引用配置
    右键项目 → 引用 → 找到System.Web,查看它的属性。如果HintPath里硬编码了Framework目录的路径(非Framework64),直接删除这个HintPath配置,只保留程序集引用即可。MSBuild会根据当前目标平台,自动从对应的Framework(32位)或Framework64(64位)目录加载正确的版本。
    如果你习惯手动编辑.csproj文件,找到类似这样的节点:

    <Reference Include="System.Web">
      <HintPath>C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.dll</HintPath>
    </Reference>
    

    改成:

    <Reference Include="System.Web" />
    
  • 验证解决方案和项目的平台配置一致性
    点击菜单栏的Build → Configuration Manager,确保:

    1. 解决方案的“活动解决方案平台”设置为x64
    2. 你的项目对应的“平台”也是x64,并且“配置”和当前编译模式(Debug/Release)匹配
      有时候解决方案平台和项目平台不匹配,会导致加载错误的程序集版本。
  • 清理编译缓存并重建
    先执行Build → Clean Solution,然后手动删除项目目录下的bin和obj文件夹,再重新编译。旧的32位编译缓存很可能会干扰x64的编译过程。

  • 启用64位MSBuild(VS2013专属设置)
    打开Tools → Options → Projects and Solutions → Build and Run,勾选“Use the 64-bit version of MSBuild when building on 64-bit systems”。VS2013默认可能用32位MSBuild,这会导致它优先加载32位的.NET框架程序集,进而引发错误。

  • 排查其他潜在依赖
    如果上面的步骤都没用,检查项目里是否还有其他第三方组件是32位专属的。虽然报错指向System.Web,但有时候其他32位依赖会间接导致框架程序集加载异常。

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:51:53