MVC发布应用报错:无法加载netstandard 2.1.0.0程序集
针对你遇到的发布后System.IO.FileNotFoundException找不到netstandard 2.1程序集的问题,可尝试以下几种解决办法:
检查并调整依赖包版本
你的项目目标是.NET Framework 4.5.2,该版本仅支持到netstandard 2.0,不兼容netstandard 2.1。检查项目中引用的NuGet包(尤其是DevExpress相关组件),确认是否有依赖netstandard 2.1的包。如果有,将这些包降级到适配.NET Framework 4.5.2的版本——比如选择明确标注支持.NET Framework 4.5.2或netstandard 2.0的版本。添加程序集绑定重定向
在项目的web.config文件中添加netstandard程序集的绑定重定向配置,让系统将对2.1版本的请求指向兼容的2.0版本。配置示例如下:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="netstandard" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>注意:如果项目中还未安装
NETStandard.Library包,先通过NuGet安装NETStandard.Library(版本选2.0.3,这是适配4.5.2的稳定版本)。确保发布时包含所有依赖程序集
- 右键项目 → 选择「属性」→ 切换到「发布」标签页;
- 点击「配置」按钮,在弹出的窗口中勾选「包含所有项目输出」和「包含来自NuGet包的所有程序集」;
- 发布后检查目标服务器的bin目录,确认是否存在
netstandard.dll,如果缺失,手动从本地项目的packages/NETStandard.Library.2.0.3/build/netstandard2.0目录中复制该文件到服务器bin目录。
更新服务器的.NET Framework环境
确保服务器已安装.NET Framework 4.5.2,并且安装了补丁KB3102436——该补丁是.NET Framework 4.5.2支持netstandard 2.0的必要组件,缺失会导致无法正确加载netstandard相关程序集。清理并重新发布项目
清理解决方案(菜单「生成」→「清理解决方案」),删除项目目录下的bin和obj文件夹,然后重新生成项目,再执行发布操作,避免旧的缓存文件干扰。
内容的提问来源于stack exchange,提问作者Ionut

