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

ASP.NET Core 2.0基于.NET Framework 4.6.1发布时缺失Microsoft.CSharp.dll

解决ASP.NET Core 2.0发布后找不到Microsoft.CSharp.dll的问题

我之前也碰到过一模一样的情况——ASP.NET Core 1.1升2.0后本地跑完全正常,一发布到服务器就报这个错。本质是2.0针对.NET Framework项目的发布逻辑做了调整,默认不再输出ref文件夹,而你的应用依赖了引用程序集,服务器上又缺少对应的环境,所以才会触发这个异常。给你几个靠谱的解决办法:

方法一:强制发布时复制引用程序集

打开你的项目文件(.csproj),在<PropertyGroup>节点里添加下面这行配置:

<CopyRefAssembliesToPublishDirectory>true</CopyRefAssembliesToPublishDirectory>

保存后重新执行dotnet publish,你会发现消失的ref文件夹又回来了,服务器上的错误也会随之消失。这个配置能让发布行为回到1.1的模式,把需要的引用程序集一起打包进去,不用依赖服务器上的开发环境。

方法二:确保服务器安装了完整的.NET Framework 4.6.1开发包

如果不想修改项目配置,那得检查服务器上的.NET Framework是不是完整的。很多人只装了运行时,但引用程序集是包含在开发包里的(默认路径是C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1)。去微软官网下载.NET Framework 4.6.1的开发包重新安装,就能补上缺失的引用程序集。

方法三:确认项目的目标框架配置正确

先检查你的.csproj里的目标框架是不是明确设为net461,别写错版本:

<TargetFramework>net461</TargetFramework>

有时候不小心把目标框架改成其他版本,也会导致引用程序集的路径匹配错误,这个细节很容易被忽略。

补充说明

ASP.NET Core 2.0针对.NET Framework项目做了发布优化,默认不复制引用程序集,因为官方假设服务器上已经部署了对应的.NET Framework开发环境。但实际很多生产服务器只有运行时,所以就会出现这种找不到引用程序集的情况。而1.1版本默认会把这些文件打包进去,所以之前没碰到问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:17:58