【问题标题】:Using legacy projects containing 'System.Web.HttpContext' in ASP.NET Core3.1在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目
【发布时间】:2020-01-08 22:10:18
【问题描述】:

我们有一些使用 .Net Framework 编写的遗留项目,应该由 ASP.NET Core3.1 编写的 API 项目使用。 问题是这些遗留项目正在使用您知道的“System.Web.HttpContext”不再存在于 .net 核心中。 现在我们收到此错误: '无法从程序集 'System.Web 加载类型 'System.Web.HttpContext',版本=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'。'
你以前遇到过这个问题吗?有人可以帮忙吗?

【问题讨论】:

  • 这些项目是否在 .Net Standard 中运行?你检查过兼容性吗?
  • 它们仍在 .Net Framework 中,我们添加了它们的 dll 作为对 .net 核心 API 项目的引用。此外,我们已经通过“.NET Portability Analyzer”检查和管理兼容性

标签: c# asp.net-core .net-core


【解决方案1】:

.NET Framework 库在技术上与 .NET Core 不兼容。 .NET Standard 库是,而且由于 .NET Framework 和 .NET Core 都实现了 .NET Standard,Microsoft 在编译器中做了一个特殊的豁免,以允许 .NET Framework 库被面向 .NET 的项目引用。 NET Core,需要注意的是,它们实际上可能无法正常工作。当您从 .NET Core 项目中引用 .NET Framework 库时,您会收到有关此效果的警告。

只要 .NET Framework 库使用与 .NET Standard 2.0 兼容的 API,它就可以工作。 System.Web.HttpContext 不是这样的 API,所以它不能在 .NET Core 项目中工作。时期。对此你无能为力。

您可以尝试使用编译器指令对您的库和 .NET Core 兼容 API 进行多目标处理。这会起作用,但很快就会变得混乱。否则,您只需要为 ASP.NET Core 编写新版本的库,因为您可能正在尝试维护对 ASP.NET 的当前库的支持。

【讨论】:

  • 使用编译器指令的多目标库和子 .NET Core 兼容 API?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 2020-12-22
  • 2021-04-27
  • 1970-01-01
  • 2021-12-20
  • 2020-09-20
相关资源
最近更新 更多