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

.NET Core 3.1引用.NET Standard 2.1项目遇System.Web.Services加载错误

问题分析与操作误区

核心误解:.NET Standard并非.NET Framework兼容层

你错误认为迁移到.NET Standard就能让依赖.NET Framework专属组件的类库在.NET Core环境运行,这是关键误区:
-.NET Standard是API规范,而非运行时,本身不包含任何.NET Framework专属实现(比如System.Web.Services这类仅属于.NET Framework的组件)。
-.NET Standard类库能被不同.NET平台引用的前提是,类库依赖的API在目标平台(此处为.NET Core 3.1)有对应实现,但System.Web.Services是.NET Framework独有的,.NET Core/.NET 5+完全未提供该组件的兼容实现。

具体操作问题

  • 错误的迁移方式:直接将.NET Framework类库的目标框架改为.NET Standard 2.1,却未移除或替换对System.Web.Services的依赖。该组件是.NET Framework的专属引用程序集,在.NET Core环境中仅能用于反射查看,无法实际执行,因此才会抛出"Reference assemblies should not be loaded for execution"的错误。
  • 忽略平台兼容性检查:迁移前未确认System.Web.Services是否存在于.NET Standard/.NET Core的API兼容列表中——该组件属于.NET Framework遗留的ASMX相关Web服务技术,.NET Core已放弃对这类技术的支持,转而推荐WCF Core或其他现代Web服务方案。
  • 无效的DLL复制操作:即便把System.Web.Services.dll复制到输出目录也无济于事,因为.NET Core运行时不会加载.NET Framework专属程序集来执行,这类DLL仅能在.NET Framework环境下运行。

可行修正方向

  • 替换System.Web.Services依赖:若DataLoaderLib使用的是ASMX客户端,可改用System.ServiceModel.Http(WCF Core)或直接通过HttpClient调用Web服务。
  • 保留.NET Framework类库并启用兼容模式:若无法修改依赖,可将DataLoaderLib保留为.NET Framework 4.8类库,让.NET Core 3.1项目通过**.NET Framework兼容性模式**引用(需确保运行环境装有.NET Framework 4.8),但这只是临时方案,不推荐长期使用。
  • 重构DataLoaderLib:移除所有.NET Framework专属API依赖,改用.NET Standard兼容的替代方案,确保类库真正具备跨平台运行能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:03:25