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

为何部署C# Web项目时提示缺少Microsoft.Web.Infrastructure.dll

问题原因
  • 依赖链传递引用的复制配置问题:你检查项目A的csproj没有对应引用属于正常情况,问题出在项目B的引用配置:项目B对Microsoft.Web.Infrastructure的引用属性中,「复制本地(Copy Local)」被设置为False。这种配置下,编译阶段该程序集不会被复制到项目B的输出目录,更不会被传递复制到依赖项目B的项目A的bin目录。你本地开发环境的全局程序集缓存(GAC)中默认预装了该程序集,因此本地调试运行时可以正常加载,不会触发报错。
  • 服务器运行环境缺失对应程序集:目标服务器的GAC中没有安装Microsoft.Web.Infrastructure程序集,ASP.NET运行时加载依赖链中的程序集时,会优先查找GAC,找不到再查找应用bin目录,两个位置都找不到就会抛出你遇到的文件找不到异常。
  • Web.config绑定规则触发主动加载:如果你的项目A的Web.config中存在针对Microsoft.Web.Infrastructure的绑定重定向规则,哪怕你没有直接引用该程序集,运行时也会主动尝试加载指定版本的程序集,进一步触发找不到文件的错误。
解决办法
  • 打开项目B的引用列表,找到Microsoft.Web.Infrastructure的引用项,右键打开属性,将「复制本地」改为True,重新编译解决方案后,该dll会被自动复制到项目A的bin目录,部署时带上即可。
  • 如果不想修改项目B的配置,可以直接在项目A中添加对Microsoft.Web.Infrastructure的NuGet引用,引用后默认复制本地为True,编译时会自动生成到bin目录。
  • 如果允许修改服务器系统环境,也可以直接在服务器的GAC中安装对应版本的Microsoft.Web.Infrastructure程序集,无需修改项目配置。

内容的提问来源于stack exchange,提问作者eric.bryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 15:54:04